Tôi có DataFrame gấu trúc sau.Pandas: Cách tính tổng các cột dựa trên điều kiện của các giá trị cột khác?
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
....
tôi tạo một cột mới bằng cách tổng hợp các cột "A"
, "B"
, "C"
như sau:
df['total_ABC'] = df[["A", "B", "B"]].sum(axis=1)
Bây giờ tôi muốn làm điều này dựa trên một điều kiện, tức là nếu "A" < 0.78
sau đó tạo ra một mới tóm gọn cột df['smallA_sum'] = df[["A", "B", "B"]].sum(axis=1)
. Nếu không, giá trị phải bằng 0.
Làm cách nào để tạo câu lệnh có điều kiện như thế này?
Suy nghĩ của tôi sẽ được sử dụng
df['smallA_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if row['A'] < 0.78))
Tuy nhiên, điều này không làm việc và tôi không thể xác định trục.
Làm cách nào để bạn tạo cột dựa trên giá trị của các cột khác?
Bạn cũng có thể làm điều gì đó giống như đối với từng df['dog'] == 'dog2'
, tạo cột dog2_sum
, ví dụ:
df['dog2_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if df['dog'] == 'dog2'))
nhưng cách tiếp cận của tôi là không chính xác.
'
Giải pháp '.where()' là hoàn hảo! Cảm ơn – ShanZhengYang