请解释如何在 pandas 中处理 NaN,因为以下逻辑对我来说似乎“损坏”,我尝试了各种方法(如下所示)来删除空值。
我的数据框,我使用它从 CSV 文件加载read.csv
, 有一个列comments
,大部分时间都是空的。
专栏marked_results.comments
看起来像这样;该列的其余部分都是 NaN,因此 pandas 将空条目加载为 NaN,到目前为止一切顺利:
0 VP
1 VP
2 VP
3 TEST
4 NaN
5 NaN
....
现在我尝试删除这些条目,只有这个有效:
marked_results.comments.isnull()
所有这些都不起作用:
-
marked_results.comments.dropna()
只给出相同的列,没有任何内容被丢弃,令人困惑。
-
marked_results.comments == NaN
只给出一系列的所有False
s。没有什么是 NaN...令人困惑。
- 同样地
marked_results.comments == nan
我也尝试过:
comments_values = marked_results.comments.unique()
array(['VP', 'TEST', nan], dtype=object)
# Ah, gotya! so now ive tried:
marked_results.comments == comments_values[2]
# but still all the results are Falses!!!
你应该使用isnull
and notnull
测试 NaN (使用 pandas dtypes 比 numpy 更强大),请参阅文档中的“被视为缺失的值” http://pandas.pydata.org/pandas-docs/stable/missing_data.html#values-considered-missing.
使用系列方法dropna http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dropna.html在列上不会影响原始数据框,但会执行您想要的操作:
In [11]: df
Out[11]:
comments
0 VP
1 VP
2 VP
3 TEST
4 NaN
5 NaN
In [12]: df.comments.dropna()
Out[12]:
0 VP
1 VP
2 VP
3 TEST
Name: comments, dtype: object
The dropna http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html 数据框方法有一个子集参数(用于删除特定列中具有 NaN 的行):
In [13]: df.dropna(subset=['comments'])
Out[13]:
comments
0 VP
1 VP
2 VP
3 TEST
In [14]: df = df.dropna(subset=['comments'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)