📜  删除 Pandas 中的空列(1)

📅  最后修改于: 2023-12-03 15:22:42.437000             🧑  作者: Mango

删除 Pandas 中的空列

在 Pandas 中,有时候数据集中可能存在空列,这些空列有可能是由于数据提取或处理等步骤中的一些问题导致的,如果不及时清理,会影响数据分析和建模的结果。

本文介绍如何使用 Pandas 快速删除空列。

创建示例数据集

先创建一个简单的数据集,其中包含一些有值的列和一些空列。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'job': ['engineer', 'manager', 'developer'],
        'city': ['', '', '']}
df = pd.DataFrame(data)
print(df)

输出结果如下:

       name  age         job city
0     Alice   25    engineer     
1       Bob   30     manager     
2  Charlie   35  developer     

可以看到这个数据集中包含两个空列,即 city 列和左侧的一个未命名列。

检查空列

要删除空列,首先需要检查数据集中是否存在空列。Pandas 中提供了一个快速的方法来检测每列是否包含空值,可以使用 isna() 函数得到每个元素是否为 NA(即缺失值)。在将 isna() 函数应用到每一列上后,使用 any() 函数来检查每列是否有 NA 值。

empty_cols = [col for col in df.columns if df[col].isna().all()]
print(empty_cols)

这段代码创建了一个名为 empty_cols 的空列表,然后对于数据集中的每列,使用 isna() 函数判断是否每个元素都为缺失值。如果所有元素都为缺失值,则该列会被视为空列。最后,使用 all() 函数来检查每个元素是否都为缺失值。如果是,则返回 True。

输出结果如下:

['city']

这意味着 city 列是一个空列。

删除空列

现在,我们已经确认了存在空列,接下来就可以开始删除空列了。使用 Pandas 的 drop() 函数可以轻松删除空列。只需将未命名的列和所有的空列传递给 drop() 函数即可。

df.drop(empty_cols + ['Unnamed: 0'], axis=1, inplace=True)
print(df)

这里调用了 drop() 函数,它包含三个参数:要删除的列名、轴向(这里指的是列轴),以及是否在原 DataFrame 中进行修改。

输出结果如下:

       name  age         job
0     Alice   25    engineer
1       Bob   30     manager
2  Charlie   35  developer

可以看到,现在已经成功删除所有空列。

到此,我们完成了删除 Pandas 中的空列的介绍。通过这个方法,你可以很容易地清理你的数据集,以减少数据分析和建模中可能的干扰。