y = data.loc[data['column1'] != float('NaN'),'column1']
上面的代码仍在' column1'中返回NaN值的行。不确定我做错了什么..请帮忙!
答案 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