【发布时间】:2017-11-30 10:11:51
【问题描述】:
我在 pandas 数据框中有两个布尔列 A 和 B,每个都缺少数据(由 NaN 表示)。我想要的是对两列进行 AND 操作,但如果原始列中的任何一个为 NaN,我希望生成的布尔列为 NaN。我有下表:
A B
0 True True
1 True False
2 False True
3 True NaN
4 NaN NaN
5 NaN False
现在当我做df.A & df.B 我想要:
0 True
1 False
2 False
3 NaN
4 NaN
5 False
dtype: bool
但我得到了:
0 True
1 False
2 False
3 True
4 True
5 False
dtype: bool
这种行为与np.bool(np.nan) & np.bool(False) 及其排列一致,但我真正想要的是一个列,它可以确定每行是否对两者都为真,或者肯定不能对两者都为真。如果我知道两者都是 True,那么结果应该是 True,如果我知道至少有一个是 False,那么它应该是 False,否则我需要 NaN 来表明缺少数据。
有没有办法做到这一点?
【问题讨论】:
-
所需输出中的最后一个值不是
NaN? -
使用
numpy.logical_and。 -
不,只要我知道至少有一个条目是假的,我就知道它们不都是真的。
标签: python pandas boolean missing-data