在数据框的一列中过滤NaN值

4
y = data.loc[data['column1'] != float('NaN'),'column1']

上面的代码仍然返回具有“column1”中NaN值的行。不确定我做错了什么,请帮忙!

1个回答

3

NaN的定义是不等于NaN

In [1262]: np.nan == np.nan
Out[1262]: False

在维基百科上了解关于NaN的数学概念。


选项1

使用pd.Series.notnull:

df

   column1
0      1.0
1      2.0
2    345.0
3      NaN
4      4.0
5     10.0
6      NaN
7    100.0
8      NaN

y = df.loc[df.column1.notnull(), 'column1']
y

0      1.0
1      2.0
2    345.0
4      4.0
5     10.0
7    100.0
Name: column1, dtype: float64

选项 2

正如 MSeifert 建议的,您可以使用 np.isnan

y = df.loc[~np.isnan(df.column1), 'column1']
y

0      1.0
1      2.0
2    345.0
4      4.0
5     10.0
7    100.0
Name: column1, dtype: float64

选项 3

如果只涉及一个列,请调用pd.Series.dropna

y = df.column1.dropna()
y

0      1.0
1      2.0
2    345.0
4      4.0
5     10.0
7    100.0
Name: column1, dtype: float64

1
或者 np.isnan :) - MSeifert
1
谢谢您这么快地为我澄清了这个问题,@COLDSPEED!你太棒了! - pilz2985

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接