【发布时间】:2018-02-19 03:16:46
【问题描述】:
y = data.loc[data['column1'] != float('NaN'),'column1']
上面的代码仍在“column1”中返回具有 NaN 值的行。不知道我做错了什么..请帮忙!
【问题讨论】:
标签: python pandas dataframe filter nan
y = data.loc[data['column1'] != float('NaN'),'column1']
上面的代码仍在“column1”中返回具有 NaN 值的行。不知道我做错了什么..请帮忙!
【问题讨论】:
标签: python pandas dataframe filter nan
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
【讨论】:
np.isnan :)