用空数据过滤熊猫数据框列

时间:2018-11-04 01:54:03

标签: python pandas dataframe

我有一个200列以上的pandas数据框。我正在尝试检查具有空数据的所有列。如何过滤/显示具有空数据的列? df.isnull()。sum()列出了所有列的计数,但是我想只查看具有非零空数据计数的列,因为列数很高。

2 个答案:

答案 0 :(得分:3)

较新的Pandas版本具有新方法DataFrame.isna()DataFrame.notna()

1)使用DataFrame.isna()方法!

>>> df
    A     B     C     D  E      F
0   0   1.0   2.0     3  4    one
1   3   5.0   NaN   NaT  5    two
2   8   NaN  10.0  None  6  three
3  11  12.0  13.0   NaT  7   four

仅获取为空值的列列表:

>>> df.columns[df.isna().any()].tolist()
['B', 'C', 'D']

列出所有具有nan值的列。

>>> df.loc[:, df.isna().any()]
      B     C     D
0   1.0   2.0     3
1   5.0   NaN   NaT
2   NaN  10.0  None
3  12.0  13.0   NaT

2)使用DataFrame.isnull()方法!

要获取仅是空值的列列表,返回类型为布尔值。

>>> df.isnull().any()
A    False
B     True
C     True
D     True
E    False
F    False
dtype: bool

仅获取具有值的null的列列表:

>>> df.columns[df.isnull().any()].tolist()
['B', 'C', 'D']

要选择一个子集-所有列至少包含一个NaN值:

>>> df.loc[:, df.isnull().any()]
      B     C     D
0   1.0   2.0     3
1   5.0   NaN   NaT
2   NaN  10.0  None
3  12.0  13.0   NaT

如果要计算每列中的缺失值:

>>> df.isnull().sum()
A    0
B    1
C    1
D    3
E    0
F    0
dtype: int64

OR

>>> df.isnull().sum(axis=0)  # axis=0 , across the columns
A    0
B    1
C    1
D    3
E    0
F    0

# >>> df.isnull().sum(axis=1)  # across the rows

最后,要获取DataFrame中的NaN和非NaN值的总数:

Nan值计数

>>> df.isnull().sum().sum()

非NaN值计数

>>> df.notnull().sum().sum()

答案 1 :(得分:0)

一旦有了计数,就可以过滤大于零的条目:

null_counts = df.isnull().sum()
null_counts[null_counts > 0]