簡體   English   中英

如何根據條件在 pandas 中創建另一列?

[英]How to create another column in pandas based on a condition?

我有兩列 - Punchout 和 Contract。 我想要一個目錄標志列,如果 Punchout 和 Contract 都是 NAN,則它是 FALSE,否則它是 TRUE。 我寫了以下一段代碼:

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

但它拋出的錯誤是: SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

還有其他方法嗎? 請幫忙!

樣本數據

Contract | Punchout | Flag
NaN      | NaN      | False
NaN      | Computer Information | True
Non-CLM0_Cat_01 | NaN | True

這里np.where不是必需的,只需使用~Series.isna反轉掩碼:

req_line['Catalog_Flag'] = ~(req_line['Contract'].isna() & req_line['Punchout'].isna())

如果沒有缺失值,則像測試一樣工作| 對於Series.notna的按位OR

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

使用Series.isna來識別nan

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM