如何使用 PANDAS 获取具有 NAN 值的列名并将这些列名存储在列表中? [复制]

Posted

技术标签:

【中文标题】如何使用 PANDAS 获取具有 NAN 值的列名并将这些列名存储在列表中? [复制]【英文标题】:How to obtain Column Names having NAN values using PANDAS and store those column names in a List? [duplicate] 【发布时间】:2021-05-04 00:19:00 【问题描述】:

我有一个如下的数据框,

df = pd.DataFrame('A': [1, 2, 3, 4, 5],
              'B': [1, Nan, 2, 3, 4],
              'C': [2, 3, Nan, Nan,5],
              'D': [5, 6, 6, 7, 8],
              'E': [Nan, 2, 3, 4, 5])

   A  B     C     D     E       
0  1  1     2     5     Nan       
1  2  Nan   3     6     2  
2  3  2     Nan   6     3  
3  4  3     Nan   7     4  
4  5  4     5     8     5

在这里,我使用df.dropna(axis=1,inplace=True) 删除数据框中具有NAN 的列。 但在删除这些列之前,我需要捕获具有 NAN 值的列并将这些列名存储在 List 中。

例如:在上面的数据框中,我们在 B、C 和 E 列中有 NAN。所以这些列名必须首先存储在列表中 [B,C,E] 然后删除所有这些列。

关于如何将这些列名存储在列表中的任何建议?

【问题讨论】:

@yudhiesh 感谢分享。我得到了问题的答案 【参考方案1】:

我认为应该这样做:

import pandas as pd
import numpy as np

df = pd.DataFrame('A': [1, 2, 3, 4, 5],
              'B': [1, np.nan, 2, 3, 4],
              'C': [2, 3, np.nan, np.nan,5],
              'D': [5, 6, 6, 7, 8],
              'E': [np.nan, 2, 3, 4, 5])

final = df.isna().sum()
listOfColumns = []
for i,j in zip(final,list(df.columns)):
    if i > 0:
        listOfColumns += j
    else:
        pass

print(listOfColumns)

如果您只想检查列中 Null / Nan 值的数量,您可以简单地运行:

df.isna().sum()

【讨论】:

以上是关于如何使用 PANDAS 获取具有 NAN 值的列名并将这些列名存储在列表中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

查找具有 NaN 值的 DataFrame 列表的索引 - Pandas

Pandas 中具有 NaN 值的子集列

将具有多个 nan 值的 pandas 系列减少到一个集合会给出多个 nan 值

在 pandas 数据框中显示具有一个或多个 NaN 值的行

如何使用python获取丢失的记录行号和列名?

从具有特定值的表中获取列名