Servus,
möchte wiedermal anhand einem Beispiel mein Problem erklären
Ich habe ein Dataframe das ungefähr so aussieht:
Name | Provider | rom | ram | CPU
aaaaa | THIN1 | 1000 | 2000 | 0
bbbbb | THIN2 | 3000 | 4000 | 0
ccccc | THIN3 | 5000 | 6000 | 0
bbbbb | NaN | 0 | 0 | 1
Das fertige Dataframe soll wie folgt aussehen:
Name | Provider | rom | ram | CPU
aaaaa | THIN1 | 1000 | 2000 | 0
bbbbb | THIN2 | 3000 | 4000 | 1
ccccc | THIN3 | 5000 | 6000 | 0
Wie man sieht Provider muss bestehen bleiben obwohl in Zeile 'bbbbb' ein NaN Wert drin stand.
Hab versucht das Problem so zu lösen:
df = df.groupby(["Name"], as_index=False).agg("sum")
Es wird alles richtig summiert aber meine spalte Provider verschwindet.
Wie bekomme ich es hin das die spalte erhalten bleibt.
Vielen Dank schon mal im voraus.
dataframe gruppieren aber eine spalte erhalten
-
- User
- Beiträge: 23
- Registriert: Samstag 22. Februar 2020, 13:02
Hab selber eine Lösung gefunden:
wahrscheinlich lag es an den nan werte.
Code: Alles auswählen
#replace nan values with 0
df.fillna(0, inplace=True)
#group Name / Provider Name and sum other columns
df= df.groupby(["Name", "Provider"], as_index=False).agg("sum")
-
- User
- Beiträge: 23
- Registriert: Samstag 22. Februar 2020, 13:02
mein vorheriger Lösungsansatz ist falsch. Das Problem kann ich bis jetzt nicht lösen und hab auch keinen Lösungsansatz. Kann bitte wer helfen
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@python_student: Warum steht denn da NaN bei "Provider"? Das ist bei einer Spalte die keine Gleitkommazahlen beinhaltet komisch. Da müsste halt auch "THIN2" stehen, dann kann man "Name" und "Provider" als Schlüssel für die Aggregation nehmen und Dein gewünschtes Ergebnis heraus bekommen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
-
- User
- Beiträge: 23
- Registriert: Samstag 22. Februar 2020, 13:02
@__blackjack__ Das dort Werte fehlen ist korrekt, weil es aus einem anderen sheet kommt (dataframe) und dort gab es keine Spalte mit Provider. Deswegen fehlt auch der wert.
Gibt es keine Lösung das er den string übernimmt welcher größer als 0 ist? Ich komm leider nicht drauf.
Durch dieses Problem tauchen bei mir bugs auf weil ich es versuche nach teilstrings zu suchen und den Provider händisch verändere(hardcoding).
Vielen dank schon mal
Gibt es keine Lösung das er den string übernimmt welcher größer als 0 ist? Ich komm leider nicht drauf.
Durch dieses Problem tauchen bei mir bugs auf weil ich es versuche nach teilstrings zu suchen und den Provider händisch verändere(hardcoding).
Vielen dank schon mal
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@python_student: Ich würde versuchen die Lücken zu füllen, beziehungsweise zusehen das die gar nicht erst entstehen. Oder diese Provider-Spalte erst hinterher hinzufügen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Das Problem ist ja nicht nur die Provider-Spalte. Das Problem sind alle Spalten. NaN und 0 sollen offensichtlich durch Werte aus anderen Reihen ersetzt werden, wenn der Name gleich ist.
Mit Logik in Python zu lösen. Von Pandas habe ich keine Ahnung.
Mit Logik in Python zu lösen. Von Pandas habe ich keine Ahnung.