Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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 如何根据条件在pandas中创建另一列?_Python_Pandas - Fatal编程技术网

Python 如何根据条件在pandas中创建另一列?

Python 如何根据条件在pandas中创建另一列?,python,pandas,Python,Pandas,我有两个专栏——Punchout和Contract。 我想要一个目录标志列,如果Punchout和Contract都是NAN,则为FALSE,否则为TRUE。 我编写了以下代码: req_line['Catalog_Flag'] = np.where((req_line['Contract']) & (req_line['Punchout']) = '[]',False,True) 但它抛出的错误是:SyntaxError:expression不能包含赋值,可能您的意思是“==”? 还

我有两个专栏——Punchout和Contract。 我想要一个目录标志列,如果Punchout和Contract都是NAN,则为FALSE,否则为TRUE。 我编写了以下代码:

req_line['Catalog_Flag'] = np.where((req_line['Contract']) & (req_line['Punchout']) = '[]',False,True)
但它抛出的错误是:
SyntaxError:expression不能包含赋值,可能您的意思是“==”?

还有别的办法吗?请帮忙

样本数据

Contract | Punchout | Flag
NaN      | NaN      | False
NaN      | Computer Information | True
Non-CLM0_Cat_01 | NaN | True
用于识别
nan

req_line['Catalog_Flag'] = np.where(req_line['Contract'].isna() & req_line['Punchout'].isna(), False, True)
用于识别
nan

req_line['Catalog_Flag'] = np.where(req_line['Contract'].isna() & req_line['Punchout'].isna(), False, True)

此处为
np。如果不需要
,只需使用
~
进行反转遮罩:

对于按位
|
无缺失值时,通过以下方式进行类似测试:


此处为
np。如果不需要
,只需使用
~
进行反转遮罩:

对于按位
|
无缺失值时,通过以下方式进行类似测试:


您是否尝试
==
?你能添加一些样本数据吗?是的,我试过了。编辑问题并添加示例数据。是否尝试
==
?你能添加一些样本数据吗?是的,我试过了。编辑问题并添加示例数据。
req_line['Catalog_Flag'] = req_line['Contract'].notna() | req_line['Punchout'].notna()

print (req_line)
          Contract              Punchout   Flag  Catalog_Flag
0              NaN                   NaN  False         False
1              NaN  Computer Information   True          True
2  Non-CLM0_Cat_01                   NaN   True          True