我有下表
A B C <br/>
1 5 True 10<br/>
2 6 False 2<br/>
3 1 True 5<br/>
现在,我想创建一个新列D
,当列A
大于5并且B
为TRUE时将其设置为TRUE。
以下命令不起作用:
df['D'] = FALSE
df[['A', 'B','D']].apply(lambda x: x['D']=TRUE if x['A']>5 & x['B']==TRUE else FALSE, axis=1)
我做错了什么?
答案 0 :(得分:2)
我认为您需要:
import numpy as np
df['D'] = (df['A']>5) & (df['B']==True)
print(df)
输出:
A B C D
0 5 True 10 False
1 6 False 2 False
2 1 True 5 False
其他
如果所需列不是布尔值,则可以使用np.where
:
df['D'] = np.where((df['A']>5) & (df['B']==True), 'TRUE','FALSE')