y = data.loc[data['column1'] != float('NaN'),'column1']
上面的代码仍然返回具有“column1”中NaN值的行。不确定我做错了什么,请帮忙!
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
np.isnan
:) - MSeifert