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

在 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.how

File /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.factorize

File pandas/_libs/hashtable_class_helper.pxi, line 1817, in pandas._libs.hashtable.PyObjectHashTable.get_labels

File pandas/_libs/hashtable_class_helper.pxi, line 1732, in pandas._libs.hashtable.PyObjectHashTable._unique

File pandas/_libs/missing.pyx, line 360, in pandas._libs.missing.NAType.__bool__


TypeError: boolean value of NA is ambiguous

蝴蝶不菲
浏览 327回答 2
2回答

不负相思意

这与在 pandas 1.0.0&nbsp;中实现以及 pandas 团队如何决定它应该在布尔上下文中工作有关。此外,考虑到它是一个实验性功能,因此除了实验之外,它不应该用于任何事情:pd.NA警告实验:pd的行为。NA 仍然可以在没有警告的情况下更改。在pandas文档的另一个链接中,它涵盖了使用缺失值的工作,我相信可以找到您正在寻找的原因和答案:布尔上下文中的 NA:由于 NA 的实际值是未知的,因此将 NA 转换为布尔值是不明确的。下面会引发错误:TypeError:NA 的布尔值不明确此外,它还提供了一个有价值的建议:“这也意味着pd。NA 不能在计算为布尔值的上下文中使用,例如 if 条件:...其中条件可能是pd。那。在这种情况下,isna() 可用于检查 pd。NA 或条件为 pd。可以避免NA,例如通过事先填充缺失值。

素胚勾勒不出你

我决定我的数据中的实例是有效的,因此我需要处理它们而不是填充它们,就像.如果您像我一样在这种情况下,请将其从转换为其中之一或简单地使用.只有您可以决定 null 是应该出来 T 还是 F,但这里有一个简单的例子:pd.NAfillna()pd.NATrueFalsepd.isna(val)val = pd.NAif pd.isna(val) :&nbsp; &nbsp; print('it is null')else :&nbsp; &nbsp; print('it is not null')返回:it is null然后val = 7if pd.isna(val) :&nbsp; &nbsp; print('it is null')else :&nbsp; &nbsp; print('it is not null')返回:it is not null希望这有助于其他人获得明确的行动方案(Celius的答案是准确的,但我想为那些为此而苦苦挣扎的人提供可操作的代码)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python