2017-04-13 4 views
0

Ich habe das folgende Wörterbuch mit 2 Schlüsseln, von denen jeder ein Pandas Datenrahmen ist.Spalten aus Datenrahmen über Schlüssel in einem Wörterbuch aggregieren

x1 = np.random.randn(50) 
x2 = np.random.randn(50) 

df1 = pd.DataFrame({'x':x1}) 
df2 = pd.DataFrame({'x':x2}) 

exampledict={'key1': df1, 'key2':df2} 

ich mag einen neuen Schlüssel in exampledict schaffen, die so genannten ‚total‘, wo das Ergebnis ist die Summe der Werte der Spalte x in jedem des Datenrahmen der einzelnen Tasten. Dieses Beispiel ist absichtlich einfach, aber in der Praxis 1) könnte es viele Schlüssel in exampledict geben (dessen Wert wird immer ein Datenrahmen sein) und 2) jeder Datenrahmen könnte andere Spalten als nur 'x' haben, also würde ich gerne auf diese Spalte verweisen direkt. Wir können annehmen, dass die Indizes jedes Datenrahmens immer übereinstimmen.

edit: ich das Ergebnis möchte ein Datenrahmen auch die Summe der einzelnen Elemente enthalten sein, mit der Spalte ‚x‘ und dem gleichen Indexe

Antwort

0

Dies sollte es tun:

exampledict['total'] = np.sum([df['x'].values for df in exampledict.values()], axis=0) 
+0

ich hätte wahrscheinlich klarer sein sollen: ich möchte das Ergebnis ein Datenframe sein, das auch die Summe jedes Elements enthält, mit der Spalte 'x' und dem gleichen Index – laszlopanaflex

0

Sie haben um die Tatsache anzusprechen, dass der neue "Gesamt" -Schlüssel nicht in der Summe enthalten sein kann ... sonst wird er die Summe zu sich selbst hinzufügen!

for key, value in exampledict.iteritems(): 
    for k, v in value.iteritems(): 
     if key != 'total': 
      exampledict['total'] += v 

Verwenden von iteritems() für den Fall, dass die Wörterbücher riesig werden.

Verwandte Themen