Seite 1 von 1

Tabelle gruppieren

Verfasst: Mittwoch 26. Februar 2020, 09:39
von python_student
Ich habe eine folgende Tabelle als Dataframe:
index | Module | Provider | ram | rom
0 | name_AAA | aaaaaa | 10 | 20
1 | name_AAA | aaaaaa | 30 | 40
2 | name_BBB | bbbbbb | 0 | 10
3 | name_BBB | bbbbbb | 20 | 30
4 | name_BBB | bbbbbb | 40| 0

und bräuchte folgende Tabelle:

0 | Module | Provider | ram | rom
1 | name_AAA | aaaaaa | 40 | 60
2 | name_BBB | bbbbbb | 60 | 40

Ich schaffe es das Module zusammenzufassen und die ram und rom spalte zu summieren aber meine Provider spalte verschwindet:

Code: Alles auswählen

df_group= df.groupby('Module', as_index=False).agg({'ram':'sum', 'rom': 'sum'})
wie kann ich die Module spalte zusammenfassen und auch die provider spalte

Re: Tabelle gruppieren

Verfasst: Mittwoch 26. Februar 2020, 10:04
von python_student
Ich habe es gerade selber hinbekommen:

Code: Alles auswählen

df_group= df.groupby(["Module", 'Provider']).agg({'ram': 'sum', 'rom': 'sum'})
df_group= df_group.reset_index()
kann mir das wer erklären. Ich versteh nicht warum der index resetet wird. Was macht die funktion genau?

Re: Tabelle gruppieren

Verfasst: Mittwoch 26. Februar 2020, 10:19
von __blackjack__
@python_student: Die setzt den Index als Spalten. Du hättest auch einfach wie im ersten Versuch ``as_index=False`` verwenden können damit die beiden Spalten gar nicht erst als Index gesetzt werden. Und wenn für alle Spalten die gleiche Funktion verwendet werden soll, braucht man die nicht explizit für jede Spalte angeben:

Code: Alles auswählen

In [28]: df.groupby(["Module", "Provider"], as_index=False).agg("sum")          
Out[28]: 
     Module Provider  ram  rom
0  name_AAA   aaaaaa   40   60
1  name_BBB   bbbbbb   60   40

Re: Tabelle gruppieren

Verfasst: Donnerstag 27. Februar 2020, 10:08
von python_student
@blackjack du bist der beste!
Vielen Dank. Jetzt versteh ich es und es ist auch noch kürzer.