J'ai un objet dictionnaire de la forme:
my_dict = {id1: val1, id2: val2, id3: val3, ...}
Je veux créer ceci dans un DataFrame où je veux nommer les 2 colonnes 'business_id' et 'business_code'.
J'ai essayé:
business_df = DataFrame.from_dict(my_dict,orient='index',columns=['business_id','business_code'])
Mais il est dit que from_dict
ne prend pas d'argument de colonnes.
TypeError: from_dict () a obtenu un argument de mot clé inattendu, 'colonnes'
Vous pouvez parcourir les éléments:
In [11]: pd.DataFrame(list(my_dict.iteritems()),
columns=['business_id','business_code'])
Out[11]:
business_id business_code
0 id2 val2
1 id3 val3
2 id1 val1
Pour obtenir les mêmes fonctionnalités que la documentation et éviter les solutions de contournement du code, assurez-vous que vous utilisez la version la plus récente de Pandas. J'ai récemment rencontré la même erreur lors de l'exécution d'une ligne de code du tutoriel sur les pandas:
pd.DataFrame.from_dict(dict([('A', [1, 2, 3]), ('B', [4, 5, 6])]),orient='index', columns=['one', 'two', 'three'])
J'ai vérifié la version de Pandas et découvert que j'utilisais la version 22, lorsque celle-ci est disponible.
import pandas as pd
pd.__version__
Out[600]: '0.22.0'
J'ai mis à jour en utilisant pip:
c:\pip install --upgrade pandas
J'ai confirmé ma version mise à jour à 23, et le même code from_dict () fonctionnait sans erreur. Aucune modification de code requise.
À partir de la version 0.23.0 , vous pouvez spécifier un paramètre columns
dans from_dict
:
my_dict = {id1: val1, id2: val2, id3: val3, ...}
df = pd.DataFrame.from_dict(my_dict, orient='index', columns=['business_id', 'business_code'])
Remarque: j'ai également répondu en nature sur cette question similaire .
Faire ceci:
créer le dataframe
df = pd.DataFrame(data_as_2d_ndarray)
créer une liste triée de noms de colonnes à partir du dictionnaire - ajustez la clé karg si nécessaire pour saisir la valeur de tri de votre dict, bien entendu, le dictionnaire doit comporter des formes cohérentes
col_names = sorted(list(col_dict.iteritems()),key=lambda x:x[0])
remodeler et définir les noms des colonnes
df.columns = Zip(*col_names)[1]
C’est par rapport à TypeError que vous avez rencontré. Selon la documentation Pandas, from_dict utilisera le mot-clé 'colonnes' uniquement si orient = 'index'.