(这个问题可能可以推广到过滤任何 bool Pandas 系列,但我在该主题上找不到任何东西可以解决我的问题。)
鉴于此数据框:
df = pd.DataFrame({'a': (1, None, 3), 'b': (4, 5, 6), 'c': (7, 8, None), 'd': (10, 11, 12)})
df
a b c d
0 1.0 4 7.0 10
1 NaN 5 8.0 11
2 3.0 6 NaN 12
我需要获取其中包含 NaN 值的列名称列表(我的真实数据集有 80 多个列,出于清理目的,我暂时只想关注任何包含 NaN 的内容) )。这将为我提供完整的 bool 列表:
df.isnull().any()
a True
b False
c True
d False
dtype: bool
理想情况下我只想要:
a True
c True
我不知道该怎么做。掩码很接近,但应用于行:
mask = df.isnull().values
df[mask]
a b c d
1 NaN 5 8.0 11
2 3.0 6 NaN 12
有没有办法将它们应用到列轴,或者有没有更好的方法来完成我正在寻找的事情?
最佳答案
您可以使用掩码对列执行索引:
>>> df.columns[df.isnull().any()]
Index(['a', 'c'], dtype='object')
或者,如果您想显示给定列的数据:
>>> df[df.columns[df.isnull().any()]]
a c
0 1.0 7.0
1 NaN 8.0
2 3.0 NaN
关于python - 过滤 pandas .isnull().any() 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59603794/