在纯Python中,None or True
返回True
。
但是,当我在pandas中对包含None值的两个Series执行|
操作时,结果并不如我所期望:
>>> df.to_dict()
{'buybox': {0: None}, 'buybox_y': {0: True}}
>>> df
buybox buybox_y
0 None True
>>> df['buybox'] = (df['buybox'] | df['buybox_y'])
>>> df
buybox buybox_y
0 False True
期望结果:
>>> df
buybox buybox_y
0 True True
我通过两次应用OR操作得到了想要的结果,但我不知道为什么要这样做。
我不是在寻找解决方法(我已经通过连续两次应用df['buybox'] = (df['buybox'] | df['buybox_y'])
得到了),而是在寻找解释,因此标题中有'why'。
|
和or
是两个完全不同的操作符。请注意,None | True
会产生类型错误。 - chepner|
表示逻辑或,而我们并没有收到 TypeError 的错误信息。不知何故,我们得到了 False。 - user2357112