La magie des pandas au travail. Toute logique est sortie.
Le message d'erreur "ValueError: If using all scalar values, you must pass an index"
Dit que vous devez passer un index.
Cela ne signifie pas nécessairement que la réussite d'un indice oblige les pandas à faire ce que vous voulez qu'il fasse
Lorsque vous passez un index, les pandas traitent vos clés de dictionnaire comme des noms de colonne et les valeurs comme ce que la colonne doit contenir pour chacune des valeurs de l'index.
a = 2
b = 3
df2 = pd.DataFrame({'A':a,'B':b}, index=[1])
A B
1 2 3
Passer un index plus grand:
df2 = pd.DataFrame({'A':a,'B':b}, index=[1, 2, 3, 4])
A B
1 2 3
2 2 3
3 2 3
4 2 3
Un index est généralement généré automatiquement par une trame de données quand aucun n'est donné. Cependant, les pandas ne savent pas combien de lignes 2
et 3
vous voulez. Vous pouvez cependant être plus explicite à ce sujet
df2 = pd.DataFrame({'A':[a]*4,'B':[b]*4})
df2
A B
0 2 3
1 2 3
2 2 3
3 2 3
L'index par défaut est basé sur 0 cependant.
Je recommanderais toujours de passer un dictionnaire de listes au constructeur de trames de données lors de la création de trames de données. C'est plus facile à lire pour les autres développeurs. Les pandas ont beaucoup de mises en garde, ne faites pas en sorte que d'autres développeurs aient des experts dans chacun d'eux pour lire votre code.