为了账号安全,请及时绑定邮箱和手机立即绑定

np.select() 条件中的否定

np.select() 条件中的否定

紫衣仙女 2022-07-19 20:55:42
这是我的代码:import pandas as pdimport numpy as npdf = pd.DataFrame({ 'var1': ['a', 'b', 'c',np.nan, np.nan],                   'var2': [1, 2, np.nan , 4, np.nan]                 })conditions = [    (not(pd.isna(df["var1"]))) & (not(pd.isna(df["var2"]))),    (pd.isna(df["var1"])) & (pd.isna(df["var2"]))]choices = ["No missing", "Both missing"]df['Result'] = np.select(conditions, choices, default=np.nan)输出:  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1478, in __nonzero__    f"The truth value of a {type(self).__name__} is ambiguous. "ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().问题出在 line 上(not(pd.isna(df["var1"]))) & (not(pd.isna(df["var2"])))。这条线应该给出TRUEwhen in bothvar1而var2不是一个NaN值。这里的问题在于否定,因为没有否定的条件就没有问题。问题: 如何纠正(not(pd.isna(df["var1"]))) & (not(pd.isna(df["var2"])))线,以防万一在这两种情况下var1都不var2是NaN条件应该给出的值TRUE?
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

尝试:

conditions = [(~pd.isna(df["var1"]) & ~pd.isna(df["var2"])),
               (pd.isna(df["var1"]) &  pd.isna(df["var2"]))]


查看完整回答
反对 回复 2022-07-19
  • 1 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号