Pandas: Wie Summe Spalten basierend auf bedingte andere Spalte Werte?
Habe ich Folgendes pandas DataFrame.
import pandas as pd
df = pd.read_csv('filename.csv')
print(df)
dog A B C
0 dog1 0.787575 0.159330 0.053095
1 dog10 0.770698 0.169487 0.059815
2 dog11 0.792689 0.152043 0.055268
3 dog12 0.785066 0.160361 0.054573
4 dog13 0.795455 0.150464 0.054081
5 dog14 0.794873 0.150700 0.054426
.. ....
8 dog19 0.811585 0.140207 0.048208
9 dog2 0.797202 0.152033 0.050765
10 dog20 0.801607 0.145137 0.053256
11 dog21 0.792689 0.152043 0.055268
....
Ich eine neue Spalte erstellen von Summen-Spalten "A"
, "B"
, "C"
wie folgt:
df['total_ABC'] = df[["A", "B", "B"]].sum(axis=1)
Nun würde ich gerne dies auf der Grundlage einer bedingten, d.h. wenn "A" < 0.78
dann erstellen Sie eine neue Spalte summiert df['smallA_sum'] = df[["A", "B", "B"]].sum(axis=1)
. Andernfalls wird der Wert sollte null sein.
Wie schafft man bedingte Anweisungen wie diese?
Mein Gedanke wäre, die Nutzung
df['smallA_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if row['A'] < 0.78))
Aber so funktioniert das nicht und ich bin nicht in der Lage, anzugeben Achse.
Wie erstellen Sie eine Spalte auf der Grundlage der Werte der anderen Spalten?
Könnte man auch etwas tun, so wie jeder df['dog'] == 'dog2'
erstellen Spalte dog2_sum
, d.h.
df['dog2_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if df['dog'] == 'dog2'))
aber mein Ansatz ist falsch.
`
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden arbeiten sollte, hier werden wir die Maske der df, wo die Bedingung erfüllt ist, so wird
NaN
zu den Zeilen, wo die Bedingung nicht erfüllt, so nennen wirfillna
auf die neue col:Anderen Ansatz zu nennen
where
auf diesum
Ergebnis, dieser nimmt einen Wert param zurück, wenn die Bedingung nicht erfüllt:.where()
Lösung ist perfekt! Dank