过滤数据框列中的NaN值

时间:2017-09-10 22:44:14

标签: python pandas dataframe filter nan

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

上面的代码仍在' column1'中返回NaN值的行。不确定我做错了什么..请帮忙!

1 个答案:

答案 0 :(得分:3)

根据定义,

NaN不等于NaN

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

阅读维基百科上的mathematical concept

选项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 suggested,您可以使用 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