我想根据现有列中的值在 pandas 数据框中创建一个新列。新列的输入应该是boolean。目前,我正在尝试以下操作:
boolean
import pandas as pd df_edit = pd.DataFrame({'Included': [False, False, True, False], 'Update Check': [True, True, True, True], 'duplicate_fname': [True, False, False, False], 'duplicate_targetfname': [False, False, False, False]}) df_edit['test'] = df_edit['Included'] == False & df_edit['Update Check'] == True & (df_edit['duplicate_fname'] == True | df_edit['duplicate_targetfname'] == True)
当我尝试这样做时,我收到一个 ValueError,指出以下内容:
ValueError:Series 的真值不明确。请使用 a.empty、a.bool()、>a.item()、a.any() 或 a.all()。
还有其他方法可以做到这一点吗?
我的预期输出是一列,由以下值组成:
True, False, False, False
没有用括号括起来存在问题:
df_edit['test'] = (df_edit['Included'] == False) & \ (df_edit['Update Check'] == True) & \ ((df_edit['duplicate_fname'] == True) | (df_edit['duplicate_targetfname'] == True)) print (df_edit) Included Update Check duplicate_fname duplicate_targetfname test 0 False True True False True 1 False True False False False 2 True True False False False 3 False True False False False
但更好的方法是使用~反转布尔掩码并省略与Trues 的比较:
~
True
df_edit['test'] = ~df_edit['Included'] & df_edit['Update Check'] & (df_edit['duplicate_fname'] | df_edit['duplicate_targetfname']) print (df_edit) Included Update Check duplicate_fname duplicate_targetfname test 0 False True True False True 1 False True False False False 2 True True False False False 3 False True False False False