Ich habe die folgenden Pandas DataFrame.Pandas: Wie Summen Spalten basierend auf anderen Spaltenwerte bedingt?
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 erstellen Sie eine neue Spalte von "A"
Spalten Summieren "B"
, "C"
wie folgt:
df['total_ABC'] = df[["A", "B", "B"]].sum(axis=1)
Jetzt würde ich dies auf einer bedingten Basis zu tun, das heißt, wenn "A" < 0.78
dann eine neue erstellen summierten Spalte df['smallA_sum'] = df[["A", "B", "B"]].sum(axis=1)
. Andernfalls sollte der Wert Null sein.
Wie erstellt man bedingte Anweisungen wie diese?
Mein Gedanke wäre jedoch
df['smallA_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if row['A'] < 0.78))
zu verwenden, das nicht funktioniert, und ich bin nicht in der Lage Achse angeben.
Wie erstellen Sie eine Spalte basierend auf den Werten anderer Spalten?
Sie auch so etwas wie für jeden df['dog'] == 'dog2'
tun könnte, schaffen Spalte dog2_sum
, das heißt
df['dog2_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if df['dog'] == 'dog2'))
aber mein Ansatz ist falsch.
`
Die '.where()' Lösung ist perfekt! Vielen Dank – ShanZhengYang