2017-06-11 1 views
1

ich eine verschachtelte Wörterbuch haben:machen Wörterbuch von Datenrahmen von Wörterbuch der Wörterbücher in Pandas

Night_interval={ 
    '2010': { 
     Timestamp('2010-07-01 00:00:00'): 29, 
     Timestamp('2010-07-02 00:00:00'): 28, 
     Timestamp('2010-07-03 00:00:00'): 28, 
     Timestamp('2010-07-04 00:00:00'): 29, 
     Timestamp('2010-07-05 00:00:00'): 28 
      }, 
    '2011': { 
     Timestamp('2010-07-01 00:00:00'): 29, 
     Timestamp('2010-07-02 00:00:00'): 28, 
     Timestamp('2010-07-03 00:00:00'): 28, 
     Timestamp('2010-07-04 00:00:00'): 29, 
     Timestamp('2010-07-05 00:00:00'): 28 
      }, 
    '2012': { 
     Timestamp('2010-07-01 00:00:00'): 29, 
     Timestamp('2010-07-02 00:00:00'): 28, 
     Timestamp('2010-07-03 00:00:00'): 28, 
     Timestamp('2010-07-04 00:00:00'): 29, 
     Timestamp('2010-07-05 00:00:00'): 28 
      } 
    } 

Mit diesem Wörterbuch möchte ich ein Wörterbuch von Datenrahmen mit jeder Taste, dh 2010, 2011 und 2012 verbundenen erstellen . Ich möchte auch den Timestamp als die Indizes in jedem der Datenrahmen setzen. Ich habe versucht, schriftlich folgenden Code:

Years = ['2010','2011','2012'] 
for key in Years: 
    df_interval[key] = pd.DataFrame(Night_interval[key]) 

Allerdings erhalte ich diese Fehlermeldung: ValueError: If using all scalar values, you must pass an index

ich nicht in der Lage bin zu finden, wo ich falsch mache. Ich würde jede Hilfe schätzen.

+1

Haben Sie versucht, vorbei an ein Index? Vielleicht etwas in der Art: 'df_interval [key] = pd.DataFrame ('Jahr': Night_interval [key])' –

+0

Es funktionierte, außer dass ''} um das Argument 'pd.DataFrame()' stehen sollte . Vielen Dank! – Pankaj

Antwort

1

Wenn Bedarf dict DataFrame Konstruktor mit Spaltennamen verwenden:

df_interval = {} 
Years = ['2010','2011','2012'] 
for key in Years: 
    df_interval[key] = pd.DataFrame({key:Night_interval[key]}) 

print (df_interval['2012']) 
      2012 
2010-07-01 29 
2010-07-02 28 
2010-07-03 28 
2010-07-04 29 
2010-07-05 28 

df_interval = {} 
Years = ['2010','2011','2012'] 
for key in Years: 
    df_interval[key] = pd.DataFrame({'a':Night_interval[key]}) 

print (df_interval['2012']) 
      a 
2010-07-01 29 
2010-07-02 28 
2010-07-03 28 
2010-07-04 29 
2010-07-05 28 

Oder wenn nur eine Spalte möglich ist, erstellen dict von Series:

df_interval = {} 
Years = ['2010','2011','2012'] 
for key in Years: 
    df_interval[key] = pd.Series(Night_interval[key], name=key) 

print (df_interval['2012']) 
2010-07-01 29 
2010-07-02 28 
2010-07-03 28 
2010-07-04 29 
2010-07-05 28 
Name: 2012, dtype: int64 
+0

Vielen Dank! Es funktionierte. Können Sie mir bitte den Fehler erklären, den ich bekommen habe? – Pankaj

+0

Hmmm, schwierige Frage für mich. Ich denke, ist der notwendige Spaltenname als 'Schlüssel' von dict oder benutze' pd.DataFrame.from_dict (Night_interval [key], orient = 'index') 'mit Standard' 0' Spalte. – jezrael

Verwandte Themen