2017-11-12 1 views
0

Ich habe Stack-Überlauf Fragen zur Lösung dieses Problems, aber ich habe keine Lösung gefunden.Summe Spalte in Multi-Level-Pandas Datenrahmen

Ich habe einen Datenrahmen df die wie folgt aussieht:

  value 
pod   22   72   79   86   87   88 
time_stamp           
2016-10-03 10.160000 0.000000 0.000000 32.004001 5.334000 11.176000 
2016-10-10 0.000000 0.000000 0.000000 2.032000 0.000000 0.000000  
2016-10-17 16.002001 0.000000 8.636000 21.336001 1.778000 6.604000  
2016-10-24 2.032000 6.604000 71.628004 19.050001 0.508000 2.540000  
2016-10-31 3.556000 21.590000 0.000000 0.000000 2.032000 2.794000  
2016-11-07 3.302000 10.160000 0.762000 0.254000 1.270000 2.540000  
2016-11-14 27.686001 44.704001 22.606001 1.524000 26.670001 42.164001 
2016-11-21 68.072001 56.896002 14.732000 8.128000 23.114001 63.500002 

Ausgang, wenn ich df.head(5).to_dict() wie folgt aussieht:

{('value', 22): {Timestamp('2016-10-03 00:00:00'): 10.159999966599999, 
Timestamp('2016-10-10 00:00:00'): 0.0, 
Timestamp('2016-10-17 00:00:00'): 16.0020005107, 
Timestamp('2016-10-24 00:00:00'): 2.0320000648500001, 
Timestamp('2016-10-31 00:00:00'): 3.5560001134900006}, 
('value', 72): {Timestamp('2016-10-03 00:00:00'): 0.0, 
Timestamp('2016-10-10 00:00:00'): 0.0, 
Timestamp('2016-10-17 00:00:00'): 0.0, 
Timestamp('2016-10-24 00:00:00'): 6.6040000915499997, 
Timestamp('2016-10-31 00:00:00'): 21.589999973800001}, 
('value', 79): {Timestamp('2016-10-03 00:00:00'): 0.0, 
Timestamp('2016-10-10 00:00:00'): 0.0, 
Timestamp('2016-10-17 00:00:00'): 8.6360000968000001, 
Timestamp('2016-10-24 00:00:00'): 71.628004074100005, 
Timestamp('2016-10-31 00:00:00'): 0.0}, 

Ich möchte die Spalte GROUPBY und alle Werte summieren. Ich bleibe stecken, weil dies ein Multi-Level-Index zu sein scheint.

Wenn ich dies tun s = df.sum(axis=1, level=[1]); s entfernt es nur die erste Zeile: value. Wie bekomme ich die Spalten stattdessen summiert?

Der Ausgang könnte nur eine einfache Datenrahmen sein, der die value Spalte summiert, so dass es etwas aussehen könnte:

pod 22 72 79... 
2016 100 120 110... 
2017 80 90 72... 
+0

'df.sum (Achse = 1, Ebene = 'pod')' – Wen

+0

Ich erhalte keine Fehlermeldungen, aber es Summe nicht der 'pod' Spalten. – JAG2024

+1

@ JAG2024 Es wäre sehr hilfreich, wenn Sie mir das geben: 'df.head (5) .to_dict()' und es in Ihrer Frage gepostet. Vielen Dank. –

Antwort

2

brauchen sum entlang der 0 th Es scheint, Sie Achse:

df 

       value     
        22  72   79 
2016-10-03 10.160000 0.000 0.000000 
2016-10-10 0.000000 0.000 0.000000 
2016-10-17 16.002001 0.000 8.636000 
2016-10-24 2.032000 6.604 71.628004 
2016-10-31 3.556000 21.590 0.000000 

df.sum(axis=0).to_frame().T 

     value     
      22  72   79 
0 31.750001 28.194 80.264004 

Wenn Sie eine Gruppierung nach Jahr wünschen, rufen Sie groupby unter index.year:

df.groupby(df.index.year).sum() 

      value     
      22  72   79 
2016 31.750001 28.194 80.264004 
+0

Das ist großartig! Obwohl ich gerade realisiert habe, dass ich noch etwas hinzufügen möchte, wäre es besser, das Jahr im Zeitstempel zu gruppieren und dann summieren zu lassen. Ich werde die Frage aktualisieren. – JAG2024

+1

@ JAG2024 Aktualisierte Antwort. –

+2

@ JAG2024 aktualisieren Sie nicht Ihr Fragezeichen dieses akzeptieren dann öffnen Sie ein neues. – Wen

Verwandte Themen