574 Stimmen

Konvertiere Python dict in ein DataFrame

Ich habe ein Python-Dictionary:

{u'2012-07-01': 391,
 u'2012-07-02': 392,
 u'2012-07-03': 392,
 u'2012-07-04': 392,
 u'2012-07-05': 392,
 u'2012-07-06': 392}

Ich möchte dies in ein Pandas-Dataframe umwandeln, indem ich die Daten und ihre entsprechenden Werte als zwei separate Spalten habe; das erwartete Ergebnis sieht wie folgt aus:

     Date         DateValue
0    2012-07-01    391
1    2012-07-02    392
2    2012-07-03    392
.    2012-07-04    392
.    ...           ...

Gibt es einen direkten Weg, dies zu tun?

16voto

Suat Atan PhD Punkte 1082

Pandas haben eine eingebaute Funktion zur Konvertierung eines Diktionärs in ein Datenrahmen.

pd.DataFrame.from_dict(Diktionärsobjekt, orient='index')

Für Ihre Daten können Sie diese wie folgt umwandeln:

import pandas as pd
your_dict={u'2012-06-08': 388,
 u'2012-06-09': 388,
 u'2012-06-10': 388,
 u'2012-06-11': 389,
 u'2012-06-12': 389,
 u'2012-06-13': 389,
 u'2012-06-14': 389,
 u'2012-06-15': 389,
 u'2012-06-16': 389,
 u'2012-06-17': 389,
 u'2012-06-18': 390,
 u'2012-06-19': 390,
 u'2012-06-20': 390,
 u'2012-06-21': 390,
 u'2012-06-22': 390,
 u'2012-06-23': 390,
 u'2012-06-24': 390,
 u'2012-06-25': 391,
 u'2012-06-26': 391,
 u'2012-06-27': 391,
 u'2012-06-28': 391,
 u'2012-06-29': 391,
 u'2012-06-30': 391,
 u'2012-07-01': 391,
 u'2012-07-02': 392,
 u'2012-07-03': 392,
 u'2012-07-04': 392,
 u'2012-07-05': 392,
 u'2012-07-06': 392}

your_df_from_dict=pd.DataFrame.from_dict(your_dict,orient='index')
print(your_df_from_dict)

16voto

Dies ist das, was für mich funktioniert hat, da ich eine separate Indexspalte haben wollte

df = pd.DataFrame.from_dict(some_dict, orient="index").reset_index()
df.columns = ['A', 'B']

13voto

Nader Hisham Punkte 5234
pd.DataFrame({'Datum' : dict_dates.keys() , 'Datumswert' : dict_dates.values() })

10voto

Jens Timmerman Punkte 8367

Der einfachste Weg, den ich gefunden habe, besteht darin, ein leeres DataFrame zu erstellen und das Dictionary anzuhängen. Sie müssen Pandas mitteilen, dass der Index unwichtig ist, sonst erhalten Sie den Fehler: TypeError: Can only append a dict if ignore_index=True

import pandas as pd
mydict = {'foo': 'bar'}
df = pd.DataFrame()
df = df.append(mydict, ignore_index=True)

9voto

smerllo Punkte 2797

So hat es für mich funktioniert :

df= pd.DataFrame([d.keys(), d.values()]).T
df.columns= ['Schlüssel', 'Werte']  # nenne sie wie du möchtest

Ich hoffe das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X