Tabelle gruppieren

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
python_student
User
Beiträge: 23
Registriert: Samstag 22. Februar 2020, 13:02

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
python_student
User
Beiträge: 23
Registriert: Samstag 22. Februar 2020, 13:02

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?
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
python_student
User
Beiträge: 23
Registriert: Samstag 22. Februar 2020, 13:02

@blackjack du bist der beste!
Vielen Dank. Jetzt versteh ich es und es ist auch noch kürzer.
Antworten