我有一个带有 NaN
的pandas数据框。
import pandas as pd
df = pd.DataFrame([1,2,3,float('nan')], columns=['A'])
df
A
0 1
1 2
2 3
3 NaN
我还有一个名为filter_list
的列表,我想用它来筛选我的数据框。但是如果我使用.isin()
函数,它无法检测到NaN
值。在最后一行,我得到了False
而不是True
。
filter_list = [1, float('nan')]
df['A'].isin(filter_list)
0 True
1 False
2 False
3 False
Name: A, dtype: bool
预期输出:
0 True
1 False
2 False
3 True
Name: A, dtype: bool
我知道我可以使用
.isnull()
来检查NaN
,但是这里我还有其他值要检查。我正在使用pandas 0.16.0
版本。编辑:列表
filter_list
来自用户。因此它可能有也可能没有NaN
。这就是我为什么使用.isin()
的原因。
np
的实现依赖于NaN != NaN
这一事实,所以会导致失败。因此,你需要先过滤掉所有的NaN
值,然后再过滤其他数值。 - EdChumfilter_list
中创建NaN
元素,以便pandas能够理解它? - Kathirmani Sukumardf['A'] == float('nan')
仍然无法工作,最重要的是你必须使用isnull
或notnull
来正确测试NaN
。 - EdChum