Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于输入和其他列的组合定义列_Python_Pandas - Fatal编程技术网

Python 基于输入和其他列的组合定义列

Python 基于输入和其他列的组合定义列,python,pandas,Python,Pandas,我想基于现有列中的值在我的数据框架中创建一个新列。新列的输入应为布尔值。目前,我正在尝试以下方法: 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

我想基于现有列中的值在我的数据框架中创建一个新列。新列的输入应为
布尔值
。目前,我正在尝试以下方法:

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,说明如下:

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:序列的真值不明确。使用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
但更好的方法是使用
~
反转布尔掩码,并忽略与
True
s的比较:

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

它们必须用大括号围起来。哇,太快了。多谢各位@LaurensWit-我显然删除了这个答案,因为这是一个更好的解决方案。