[英]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.