【发布时间】:2020-12-24 17:02:49
【问题描述】:
我正在尝试根据其他列的条件创建一个新列。我有这个数据框:
number, flag_new, flag_math
1, TRUE, TRUE
2, FALSE, TRUE
3, TRUE, FALSE
如果 flag_new 为 True 且 flag_math 也为 TRUE,我希望在新列上有 1。如果 flag_new 为 FALSE 且 flag_math 为 TRUE,我想添加 0 否则为 -1。
预期结果是:
number, flag_new, flag_math, new_Column
1, TRUE, TRUE, 1
2, FALSE, TRUE, 0
3, TRUE, FALSE, -1
为此,我有这个代码:
df['new_col'] = np.where(df['flag_new'] == 'TRUE' and df['flag_math'] == 'TRUE',1,
np.where(df['flag_new'] == 'FALSE' and df['flag_math'] == 'TRUE',0, -1))
但我收到以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我做错了什么?
【问题讨论】:
-
pandas和numpy使用按位运算符 (&,|,~) 代替and和or和not进行布尔运算 -
你也可以使用
np.where(df['flag_math'].eq('TRUE'), df['flag_new'].eq('TRUE').astype(int), -1)