web-dev-qa-db-fra.com

Pandas: créer des colonnes nommées dans DataFrame à partir de dict

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' 

23
anonuser0428

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
25
Andy Hayden

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.

8
cfelix

À 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 .

2
Ninjakannon

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]
0
meyerson

C’est par rapport à TypeError que vous avez rencontré. Selon la documentation Pandas, from_dict utilisera le mot-clé 'colonnes' uniquement si orient = 'index'. 

0
Karthik Sunil