python - 过滤 pandas .isnull().any() 输出

标签 python pandas

(这个问题可能可以推广到过滤任何 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/

相关文章:

python - 使用 Pandas 合并具有不同维度的多个数据框

python-3.x - 有没有办法通过与行的交集对 Pandas 列进行排序?

python - 非唯一索引的数学运算

python - 无法导入声音文件

python - 调用 librosa.grifflim 返回属性错误

Python 扭曲 : Changing directories for each client independently

python - 如何创建一个列来计算另一列中的出现次数并且不聚合 python 中的行?

python - 将 file_name 参数传递给管道以在 scrapy 中导出 csv

python - 尝试使用 Python 从标签中提取 'text'

python - 按月和年对数据框列进行排序