📅  最后修改于: 2023-12-03 15:22:42.437000             🧑  作者: Mango
在 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 中的空列的介绍。通过这个方法,你可以很容易地清理你的数据集,以减少数据分析和建模中可能的干扰。