Sla*_*ron 14 python rows dataframe pandas
我有一个包含许多NaN值的DataFrame.我想删除包含太多NaN值的行; 具体来说:7个或更多.
我尝试了几种方法使用dropna函数,但似乎很清楚它贪婪地删除包含任何 NaN值的列或行.
这个问题(Slice Pandas DataFrame by Row)告诉我,如果我可以编译一个包含太多NaN值的行的列表,我可以用一个简单的方法将它们全部删除
df.drop(rows)
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用count函数计算非空值,我可以从总数中减去并以这种方式获得NaN计数(是否有直接计算连续NaN值的方法?).但即便如此,我也不确定如何编写一个逐行遍历DataFrame的循环.
这是我认为正确的一些伪代码:
### LOOP FOR ADDRESSING EACH row:
m = total - row.count()
if (m > 7):
df.drop(row)
Run Code Online (Sandbox Code Playgroud)
我仍然是熊猫的新手,所以我对解决这个问题的其他方法非常开放; 他们是更简单还是更复杂.
EdC*_*ica 14
基本上,执行此操作的方法是确定cols的数量,设置非nan值的最小数量并删除不符合此条件的行:
df.dropna(thresh=(len(df) - 7))
Run Code Online (Sandbox Code Playgroud)
查看文档
df.dropna的可选 thresh 参数允许您为其提供最小数量的非 NA 值以保留该行。
df.dropna(thresh=df.shape[1]-7)
Run Code Online (Sandbox Code Playgroud)