Python 熊猫-删除只有NaN值的行

Python 熊猫-删除只有NaN值的行,python,pandas,rows,dataframe,Python,Pandas,Rows,Dataframe,我有一个包含许多NaN值的数据帧我想删除包含太多NaN值的行;特别是:7个或更多。 我尝试了几种方法使用dropna函数,但很明显,它会贪婪地删除包含任何NaN值的列或行 这个问题()告诉我,若我可以编译一个包含太多NaN值的行的列表,我可以用一个简单的方法将它们全部删除 df.drop(rows) 我知道我可以使用count函数计算非空值,我可以从总数中减去这些值,然后通过这种方式获得NaN计数(有没有一种直接的方法来计算一行中的NaN值?)。但即便如此,我也不知道如何编写一个逐行遍历数据帧

我有一个包含许多NaN值的数据帧我想删除包含太多NaN值的行;特别是:7个或更多。

我尝试了几种方法使用dropna函数,但很明显,它会贪婪地删除包含任何NaN值的列或行

这个问题()告诉我,若我可以编译一个包含太多NaN值的行的列表,我可以用一个简单的方法将它们全部删除

df.drop(rows)
我知道我可以使用count函数计算非空值,我可以从总数中减去这些值,然后通过这种方式获得NaN计数(有没有一种直接的方法来计算一行中的NaN值?)。但即便如此,我也不知道如何编写一个逐行遍历数据帧的循环

下面是一些我认为正确的伪代码:

### LOOP FOR ADDRESSING EACH row:
    m = total - row.count()
    if (m > 7):
        df.drop(row)

我对熊猫还是新手,所以我对解决这个问题的其他方法非常开放;无论它们是更简单还是更复杂。

df.dropna的可选thresh参数允许您为其指定非NA值的最小数目,以便保留行

df.dropna(thresh=df.shape[1]-7)

基本上,这样做的方法是确定列的数量,设置非nan值的最小数量,并删除不符合此条件的行:

df.dropna(thresh=(len(df) - 7))

请参见

有一个
thresh
参数来指定非NA值的最小数量:您尝试过这个吗?我没有注意到,谢谢。它非常适合我的需要。df.dropna(thresh=3)是我所需要的全部(数据框中有9列),我想我应该在我的答案中加入一个动态方法,如果你不知道列的数量,很高兴我能帮上忙,我不得不使用len(df.columns)而不是len(df)。工作起来很有魅力。axis=1不是告诉它放下列吗?至少在我的例子中,当我选择axis时,列会被删除=1@xkcd这取决于函数,在这种情况下,相反的
axis=1
将删除列,而不是行。“{0或'index',1或'columns'}”直接来自文档。@如果您是正确的,我不确定这是否是由于文档中的错误造成的,或者我是否将其与
drop
混淆,后者确实翻转了
axis
的预期含义,将进行更新,并感谢您指出这一点
df.dropna(thresh=2,inplace=True)#删除带有2个有效值的额外行
这稍微简单一点,对于我的应用程序来说非常有效。