繁体   English   中英

是否有与 R 中的完整案例类似的等效 Python function

[英]Is there an equivalent Python function similar to complete.cases in R

我正在删除 pandas 数据帧中的许多记录,其中包含 4 列帧中 NaN 的各种组合。 我创建了一个名为 complete_cases 的 function 来提供满足以下条件的行的索引:行中的所有列都是 NaN。

我在下面尝试了这个 function:

def complete_cases(dataframe):
    indx = []
    indx = [x for x in list(dataframe.index) \
            if dataframe.loc[x, :].isna().sum() == 
            len(dataframe.columns)]
    return indx

我想知道这是否足够优化,或者有更好的方法来做到这一点。

绝对地。 你需要做的就是

df.dropna(axis = 0, how = 'any', inplace = True)

这将删除至少有一个缺失值的所有行,并“就地”更新数据框。

一个可能的解决方案:

用“NA”计算列数创建一列以保存它

根据这个新列,根据需要过滤数据框的行

删除(现在)不必要的列

可以使用 lambda 函数来做到这一点。 例如,如果要删除具有 10 个“NA”值的行:

df['count'] = df.apply(lambda x: 0 if x.isna().sum() == 10 else 1, axis=1)
df = df[df.count != 0]
del df['count']

我建议使用 loc、isna 和任何带有列轴的,如下所示:

df.loc[df.isna().any(axis='columns')]

这样,您将仅过滤 R 中的 complete.cases 之类的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM