Cela peut être une question simple, mais je ne sais pas comment faire cela. Disons que j'ai deux variables comme suit.
a = 2
b = 3
Je veux construire un DataFrame à partir de ceci:
df2 = pd.DataFrame({'A':a,'B':b})
Cela génère une erreur:
ValueError: si vous utilisez toutes les valeurs scalaires, vous devez passer un index
J'ai aussi essayé ça:
df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()
Cela donne le même message d'erreur.
index=0
, mais cela peut conduire à une mauvaise utilisation accidentelle (en pensant qu'un seul dictionnaire peut en quelque sorte créer une trame de données à plusieurs lignes)Vous pouvez également utiliser
pd.DataFrame.from_records
ce qui est plus pratique lorsque vous avez déjà le dictionnaire en main:Vous pouvez également définir l'index, si vous le souhaitez, en:
la source
Vous devez d'abord créer une série de pandas. La deuxième étape consiste à convertir la série pandas en trame de données pandas.
Vous pouvez même fournir un nom de colonne.
la source
pd.Series(data).to_frame('ColumnName')
est plus court, bien que cet équivalent soit peut-être plus direct:pd.DataFrame.from_dict(data, orient='index', columns=['ColumnName'])
Vous pouvez essayer d’envelopper votre dictionnaire dans la liste
my_dict = {'A':1,'B':2}
pd.DataFrame([my_dict])
la source
Peut-être que Series fournirait toutes les fonctions dont vous avez besoin:
DataFrame peut être considéré comme une collection de séries, vous pouvez donc:
Concaténer plusieurs séries en une seule trame de données (comme décrit ici )
Ajouter une variable série dans un bloc de données existant ( exemple ici )
la source
Vous devez fournir des itérables comme valeurs pour les colonnes Pandas DataFrame:
la source
J'ai eu le même problème avec les tableaux numpy et la solution est de les aplatir:
la source
Si vous avez l'intention de convertir un dictionnaire de scalaires, vous devez inclure un index:
Bien que l'index ne soit pas requis pour un dictionnaire de listes, la même idée peut être étendue à un dictionnaire de listes:
Bien sûr, pour le dictionnaire de listes, vous pouvez construire le dataframe sans index:
la source
Tu pourrais essayer:
De la documentation sur l'argument 'orient': Si les clés du dict passé doivent être les colonnes du DataFrame résultant, passez 'colonnes' (par défaut). Sinon, si les clés doivent être des lignes, passez 'index'.
la source
code
mots très importants à mettre en gras , en caractères moins importants Italique Utilisez également des listes si nécessaireLa 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.
Passer un index plus grand:
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
et3
vous voulez. Vous pouvez cependant être plus explicite à ce sujetL'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.
la source
l'entrée ne doit pas nécessairement être une liste d'enregistrements - il peut également s'agir d'un seul dictionnaire:
Ce qui semble être équivalent à:
la source
En effet, un DataFrame a deux dimensions intuitives - les colonnes et les lignes.
Vous spécifiez uniquement les colonnes à l'aide des clés de dictionnaire.
Si vous ne souhaitez spécifier que des données unidimensionnelles, utilisez une série!
la source
Convertir le dictionnaire en trame de données
Donner un nouveau nom à la colonne
la source
Si vous avez un dictionnaire, vous pouvez le transformer en un bloc de données pandas avec la ligne de code suivante:
la source
Passez le dict sur une liste:
la source