当你知道它是真的时,你的声明可能会返回'false'的原因是什么?

时间:2016-02-19 18:29:00

标签: python pandas

我的具体例子:

In: list(pd.unique(df['x'].ravel())) 
Out: [nan, 1.0]

但是当我检查这是否属实时:

In: list(pd.unique(df['x'].ravel())) is [nan, 1.0]
Out: False

任何人都可以帮助我理解我做错了什么?

3 个答案:

答案 0 :(得分:3)

is测试以查看每一侧的表达式是否是相同的对象。要查看它们是否相同,请使用==

答案 1 :(得分:0)

无论哪种方式,即使您正确使用==,您仍然会得到False。一个快速的解决方法是过滤掉nan的:

[x for x in list(pd.unique(df['x'].ravel())) if str(x) != 'nan'] == ...

了解原因"NaN" doesn't equal "NaN"

答案 2 :(得分:0)

我认为你需要测试:

In [73]: df['x']
Out[73]: 
0    np.nan
1         1
Name: x, dtype: object

In [74]: list(pd.unique(df['x'].ravel())) == ['np.nan', '1']
Out[74]: True