【发布时间】:2016-05-26 23:27:56
【问题描述】:
我想比较数据框中可能包含 NaN 值的两列。
基于link,我尝试调整我的代码,但遇到以下问题:
(s1[s1.notnull()] == s2[s2.notnull()]).all()
如何调整此代码,以便我不需要从数据框中提取 s1 和 s2 作为系列,而是可以直接应用它:
import pandas as pd
import numpy as np
mydata = [{'SystemA': 1.78, 'SystemB':1.78},
{'SystemA': 2.5, 'SystemB':2.5},
{'SystemA': np.nan, 'SystemB':np.nan}]
df = pd.DataFrame(mydata)
print(df)
# does not return single True or False
# gives wrong result when e.g. 2.5 is changed to 2.6 in just one column
c = (df['SystemA'].notnull() == df['SystemB'].notnull()).all()
print('\nc:',c)
【问题讨论】:
-
对不起,我不明白你在这里追求什么,你的代码按预期工作,你想在这里测试什么?
-
不幸的是,如果我将“SystemA”中的 2.5 更改为 2.6,它也会返回“True”。
-
@Uwe 这是预期的行为。你知道
.notnull()是做什么的吗? -
当然。你说的对!过失