首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >np.select()条件下的否定

np.select()条件下的否定
EN

Stack Overflow用户
提问于 2020-02-06 16:05:09
回答 1查看 998关注 0票数 0

这是我的代码:

代码语言:javascript
复制
import pandas as pd
import numpy as np

df = 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)

输出:

代码语言:javascript
复制
  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().

问题在于行(not(pd.isna(df["var1"]))) & (not(pd.isna(df["var2"])))。当TRUEvar1var2中都不是NaN值时,这一行应该给出NaN。这里的问题是否定,因为在没有否定的条件下,没有问题。

问题:如何纠正(not(pd.isna(df["var1"]))) & (not(pd.isna(df["var2"])))行,以便当在var1var2中都不是NaN值时,条件应该给TRUE

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-06 16:10:38

尝试:

代码语言:javascript
复制
conditions = [(~pd.isna(df["var1"]) & ~pd.isna(df["var2"])),
               (pd.isna(df["var1"]) &  pd.isna(df["var2"]))]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60099141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档