我有一个包含许多NaN值的DataFrame。 我想删除包含太多NaN值的行;具体来说:7个或更多。
我尝试了几种使用 dropna 函数的方法,但很明显它贪婪地删除了包含任何 NaN值的列或行。
这个问题(Slice Pandas DataFrame by Row)告诉我,如果我可以编译一个NaN值太多的行列表,我可以用一个简单的
删除它们。df.drop(rows)
我知道我可以使用 count 函数计算非空值,我可以将它从总数中减去并以这种方式获得NaN计数(有没有直接计算NaN值的方法)行?)。但即便如此,我也不确定如何编写一个逐行遍历DataFrame的循环。
这里有一些我认为正确的伪代码:
### LOOP FOR ADDRESSING EACH row:
m = total - row.count()
if (m > 7):
df.drop(row)
我仍然是熊猫的新手,所以我对解决这个问题的其他方法非常开放;他们是否更简单或更复杂。
答案 0 :(得分:14)
答案 1 :(得分:3)
df.dropna 的可选thresh参数允许您为其保留行的最小非NA值。
df.dropna(thresh=df.shape[1]-7)