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

将两个数据帧与 pd 合并。合并列中的 NA 产生“类型错误:NA 的布尔值不明确”

将两个数据帧与 pd 合并。合并列中的 NA 产生“类型错误:NA 的布尔值不明确”

蝴蝶不菲 2022-08-02 17:36:16
在 Pandas 1.0.1 中,如果df = df.merge(df2, on=some_column)收益 率File /home/torstein/code/fintechdb/Sheets/sheets/gild.py, line 42, in gild    df = df.merge(df2, on=some_column)File /home/torstein/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py, line 7297, in merge    validate=validate,File /home/torstein/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py, line 88, in merge    return op.get_result()File /home/torstein/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py, line 643, in get_result    join_index, left_indexer, right_indexer = self._get_join_info()File /home/torstein/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py, line 862, in _get_join_info    (left_indexer, right_indexer) = self._get_join_indexers()File /home/torstein/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py, line 841, in _get_join_indexers    self.left_join_keys, self.right_join_keys, sort=self.sort, how=self.howFile /home/torstein/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py, line 1311, in _get_join_indexers    zipped = zip(*mapped)File /home/torstein/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py, line 1309, in <genexpr>    for n in range(len(left_keys))File /home/torstein/anaconda3/lib/python3.7/site-packages/pandas/core/reshape/merge.py, line 1918, in _factorize_keys    rlab = rizer.factorize(rk)File pandas/_libs/hashtable.pyx, line 77, in pandas._libs.hashtable.Factorizer.factorizeFile pandas/_libs/hashtable_class_helper.pxi, line 1817, in pandas._libs.hashtable.PyObjectHashTable.get_labelsFile pandas/_libs/hashtable_class_helper.pxi, line 1732, in pandas._libs.hashtable.PyObjectHashTable._uniqueFile pandas/_libs/missing.pyx, line 360, in pandas._libs.missing.NAType.__bool__TypeError: boolean value of NA is ambiguous
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

这与在 pandas 1.0.0 中实现以及 pandas 团队如何决定它应该在布尔上下文中工作有关。此外,考虑到它是一个实验性功能,因此除了实验之外,它不应该用于任何事情:pd.NA

警告实验:pd的行为。NA 仍然可以在没有警告的情况下更改。

在pandas文档的另一个链接中,它涵盖了使用缺失值的工作,我相信可以找到您正在寻找的原因和答案:

布尔上下文中的 NA:由于 NA 的实际值是未知的,因此将 NA 转换为布尔值是不明确的。下面会引发错误:TypeError:NA 的布尔值不明确

此外,它还提供了一个有价值的建议:

“这也意味着pd。NA 不能在计算为布尔值的上下文中使用,例如 if 条件:...其中条件可能是pd。那。在这种情况下,isna() 可用于检查 pd。NA 或条件为 pd。可以避免NA,例如通过事先填充缺失值。


查看完整回答
反对 回复 2022-08-02
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我决定我的数据中的实例是有效的,因此我需要处理它们而不是填充它们,就像.如果您像我一样在这种情况下,请将其从转换为其中之一或简单地使用.只有您可以决定 null 是应该出来 T 还是 F,但这里有一个简单的例子:pd.NAfillna()pd.NATrueFalsepd.isna(val)


val = pd.NA

if pd.isna(val) :

    print('it is null')

else :

    print('it is not null')

返回:it is null


然后


val = 7

if pd.isna(val) :

    print('it is null')

else :

    print('it is not null')

返回:it is not null


希望这有助于其他人获得明确的行动方案(Celius的答案是准确的,但我想为那些为此而苦苦挣扎的人提供可操作的代码)。


查看完整回答
反对 回复 2022-08-02
  • 2 回答
  • 0 关注
  • 326 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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