是否有等效的Python函数类似于R中的complete.cases

时间:2019-07-30 03:05:37

标签: python pandas

我正在删除熊猫数据框中的许多记录,该数据框中包含4列框架中NaN的各种组合。我创建了一个名为complete_cases的函数,以提供满足以下条件的行的索引:该行中的所有列均为NaN。

我在下面尝试过此功能:

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

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

2 个答案:

答案 0 :(得分:1)

绝对。您需要做的就是

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

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

答案 1 :(得分:0)

可能的解决方案:

使用“ 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']