请解释一下熊猫是如何对待NaN's的,因为下面的逻辑对我来说似乎是“坏的”,我尝试了各种方法(如下所示)来删除空值。
我使用read.csv
从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
只给出所有{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!!!
您需要使用
math.isnan()
函数(或numpy.isnan
)测试NaN
。不能用相等运算符检查NaNs。帮助功能->
您应该使用
isnull
和notnull
来测试NaN(使用pandas数据类型比numpy更健壮),请参见"values considered missing" in the docs。对列使用Series方法^{} 不会影响原始数据帧,但可以执行您希望的操作:
^{} DataFrame方法有一个子集参数(用于删除在特定列中有nan的行):
相关问题 更多 >
编程相关推荐