我有以下熊猫数据框。
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
....
我通过将列"A"
、"B"
、"C"
求和来创建一个新列,如下所示:
df['total_ABC'] = df[["A", "B", "B"]].sum(axis=1)
现在我想基于一个条件来做这个,即如果"A" < 0.78
,那么创建一个新的总和列df['smallA_sum'] = df[["A", "B", "B"]].sum(axis=1)
。否则,该值应为零。
如何创建这样的条件语句?
我的想法是
df['smallA_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if row['A'] < 0.78))
但是,这不起作用,我不能指定轴。
如何基于其他列的值创建列?
您还可以对每个df['dog'] == 'dog2'
执行类似的操作,创建列dog2_sum
,即
df['dog2_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if df['dog'] == 'dog2'))
但我的方法是不正确的。
`
下面应该可以工作,这里我们屏蔽满足条件的df,这将把
NaN
设置为不满足条件的行,因此我们对新列调用fillna
:另一种方法是对} ,这需要一个值param,在条件不满足时返回:
sum
结果调用^{相关问题 更多 >
编程相关推荐