微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 系列的真值在数据帧中是不明确的

我有相同的代码,我正在尝试在简单条件下在pandas数据帧中创建新字段:

if df_reader['email1_b']=='NaN':
    df_reader['email1_fin']=df_reader['email1_a']
else:
    df_reader['email1_fin']=df_reader['email1_b']

但我看到这个奇怪的错误

ValueError                                Traceback (most recent call last)
<ipython-input-92-46d604271768> in <module>()
----> 1 if df_reader['email1_b']=='NaN':
      2     df_reader['email1_fin']=df_reader['email1_a']
      3 else:
      4     df_reader['email1_fin']=df_reader['email1_b']

/home/user/GL-env_py-gcc4.8.5/lib/python2.7/site-packages/pandas/core/generic.pyc in __nonzero__(self)
    953         raise ValueError("The truth value of a {0} is ambiguous. "
    954                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 955                          .format(self.__class__.__name__))
    956 
    957     __bool__ = __nonzero__

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

任何人都可以解释我,我需要这个吗?

解决方法:

df_reader [’email1_b’] ==’NaN’是布尔值的向量(每行一个),但是如果要工作则需要一个布尔值.请改用:

df_reader['email1_fin'] = np.where(df_reader['email1_b']=='NaN', 
                                   df_reader['email1_a'],
                                   df_reader['email1_b'])

作为旁注,你确定’NaN’吗?是不是NaN?在后一种情况下,您的表达式应为:

df_reader['email1_fin'] = np.where(df_reader['email1_b'].isnull(), 
                                   df_reader['email1_a'],
                                   df_reader['email1_b'])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐