繁体   English   中英

Pandas - 获取除一组列之外所有值为 null 的行数

[英]Pandas - Get count of rows where all values are null except for a set of columns

我有一个 dataframe 如下所示(下面的示例供参考,原始有更多列):

数据框示例表

我正在尝试获取除某些特定列外所有列均为 null (NaN) 的行列表。 例如,如果这些特定列是 col2 和 col3,我会得到第一行和第三行。 如果特定列只是 col1,我只会得到最后一行。

只计算满足这些条件的行也可以。

我知道如何通过遍历每一行并进行比较来做到这一点,但有没有更快的方法来做到这一点?

谢谢!

你可以试试:

# specific columns
cols = ['col1','col2']

df[df.drop(cols, axis=1).isna().all(1)]

那不会检查您是否在cols中有数据。 如果你需要,你可以这样做:

other_nan = df.drop(cols, axis=1).isna().all(1)
chosen_notna = df[cols].notna().any(1)

df[other_nan & chosen_notna]

这是一个 function 用于这样做。 我使用difference查找获取不包括指定列的 dataframe,然后使用isna()all()查找空行:

def null_rows(df, exclude=None):
    exclude = [] if exclude is None else exclude
    return df[df[df.columns.difference(exclude)].isna().all(1)]

例子:

df = pd.DataFrame({'col1': [None, 3, None, 8],
                   'col2': [1, None, 6, None],
                   'col3': [2, 4, 7, None],
                   'col4': [None, None, None, None],
                   'col5': [None, 5, None, None]})

print(null_rows(df, ['col2', 'col3']))

Output:

   col1  col2  col3  col4  col5
0   NaN   1.0   2.0  None   NaN
2   NaN   6.0   7.0  None   NaN

暂无
暂无

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

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