如何从Pandas数据框中删除没有数据的列

3

我读取了一个有多个空列的文件,如下所示:

enter image description here

原始数据如下文所示:

id  stage   D1  D2  D3  D4  D5  D6
1   base    A                   
1   s1          2   2   4   5
1   s2          3   3   6   7
2   base    AA                  
2   s1          5   3   4   3
2   s2          3   3   2   4
2   s3          2   2   3   6
3   base    B                   
3   s1          4   4   4   5
4   base    BC  

我不知道哪些列是空的,而且它们有很多。

如何检测D2是否为空(此列中没有数据),然后删除它?

我可以迭代列/行并查找哪些列为空,但我认为这不是在Python中执行此操作的正确方法。

在Python中正确的做法是什么?


df.isna().all()? - Quang Hoang
3个回答

3
使用关键词how,您仅会删除所有行都为空的列。
df = df.dropna(axis=1, how='all')

1
如果单元格的值为空字符串(即空白字符串),则此代码无法正常工作。我该如何检测到这种情况并删除包含空字符串的列? - mans
1
你可以先用nans替换空字符串:df.replace(r'', np.NaN),然后再应用列kick。 - drops

1
尝试使用dropna,thresh这里要求列具有至少一个非空值。
df = df.dropna(thresh=1, aixs=1)

1

检查整个数据框是否存在空值

df.isnull().sum()

获取特定列的 NULL 值计数。
df.isnull.sum()['D2']

要检查整列是否为空,您可以将其与数据框的长度相等。
df.isnull.sum()['D2'] == len(df)

然后您可以删除所需的列。
df.drop('D2',axis=1,inplace=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接