Pandas从数据框中删除多列
在数据分析过程中,我们常常需要对数据进行预处理,其中之一的操作是删除数据框中的部分列。Pandas可以通过drop方法实现此功能。本文将介绍如何使用Pandas从数据框中删除多列。
阅读更多:Pandas 教程
Pandas数据框的基本结构
在介绍如何从数据框中删除多列之前,我们先来回顾一下Pandas数据框的基本结构。数据框是一个二维表格,其中包含了若干行数据和若干列数据。数据框中的每一行代表一个观察值,每一列代表一个变量。Pandas数据框可以使用DataFrame类来创建和操作。
下面我们先来创建一个简单的数据框,以便后续的示例说明:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'age': [25, 30, 35, 40, 45],
'gender': ['Female', 'Male', 'Male', 'Male', 'Female'],
'height': [165, 180, 175, 170, 170],
'weight': [50, 80, 70, 65, 55]}
df = pd.DataFrame(data)
print(df)
输出结果如下所示:
name age gender height weight
0 Alice 25 Female 165 50
1 Bob 30 Male 180 80
2 Charlie 35 Male 175 70
3 David 40 Male 170 65
4 Emily 45 Female 170 55
Pandas删除单个列
删除数据框中的单个列非常简单,可以使用drop方法并指定要删除的列名。例如,我们要删除数据框df中的列’height’,可以使用如下代码:
df = df.drop('height', axis=1)
print(df)
输出结果如下所示:
name age gender weight
0 Alice 25 Female 50
1 Bob 30 Male 80
2 Charlie 35 Male 70
3 David 40 Male 65
4 Emily 45 Female 55
需要注意的是,drop方法不会修改原始数据框,而是返回一个新的数据框。如果需要修改原始数据框,可以使用inplace参数,如下所示:
df.drop('height', axis=1, inplace=True)
print(df)
Pandas删除多个列
现在我们来考虑需要删除数据框中的多个列的情况。假设我们需要同时删除’height’和’weight’列,可以使用drop方法并指定多个列名,代码如下:
df = df.drop(['height', 'weight'], axis=1)
print(df)
输出结果如下所示:
name age gender
0 Alice 25 Female
1 Bob 30 Male
2 Charlie 35 Male
3 David 40 Male
4 Emily 45 Female
同样地,drop方法也不会修改原始的数据框。如果需要修改原始数据框,可以使用inplace参数,如下所示:
df.drop(['height', 'weight'], axis=1, inplace=True)
print(df)
Pandas删除多个列的另一种方式
除了使用drop方法以外,还可以使用del关键字来删除数据框中的列。假设我们需要删除数据框df中的’name’和’gender’列,可以使用以下代码:
del df['name']
del df['gender']
print(df)
输出结果如下所示:
age
0 25
1 30
2 35
3 40
4 45
需要注意的是,使用del关键字删除列时会修改原始的数据框,不能使用inplace参数。此外,del关键字只能用于删除单个列,不能一次性删除多个列。
Pandas快速删除列
除了使用drop方法和del关键字以外,还可以使用一些快速删除列的方法。这些方法虽然不如drop方法灵活,但是对于删除特定的列来说非常方便。
例如,如果我们需要删除数据框df中的’gender’列,可以使用pop方法,代码如下:
df.pop('gender')
print(df)
输出结果如下所示:
age
0 25
1 30
2 35
3 40
4 45
需要注意的是,使用pop方法会修改原始的数据框,并返回被删除的列作为Series对象。如果需要将被删除的列作为一个新的数据框,可以使用如下代码:
gender = df.pop('gender')
df_gender = pd.DataFrame(gender)
print(df_gender)
输出结果如下所示:
gender
0 Female
1 Male
2 Male
3 Male
4 Female
除了pop方法以外,还可以使用dropna方法和select_dtypes方法来快速删除特定的列。下面分别介绍这两种方法。
使用dropna方法删除含有缺失值的列
如果数据框中含有缺失值,可以使用dropna方法来快速删除含有缺失值的列。例如,假设我们需要删除数据框df中含有缺失值的列,可以使用以下代码:
df1 = df.dropna(axis=1)
print(df1)
输出结果如下所示:
age
0 25
1 30
2 35
3 40
4 45
需要注意的是,dropna方法会返回一个新的数据框,不会修改原始数据框。
使用select_dtypes方法删除特定类型的列
如果我们需要删除数据框中特定类型的列,可以使用select_dtypes方法。例如,假设我们需要删除数据框df中所有的字符串类型列,可以使用以下代码:
df2 = df.select_dtypes(exclude='object')
print(df2)
输出结果如下所示:
age
0 25
1 30
2 35
3 40
4 45
需要注意的是,select_dtypes方法会返回一个新的数据框,不会修改原始数据框。
总结
本文介绍了如何使用Pandas从数据框中删除单个列和多个列,包括使用drop方法、del关键字、pop方法、dropna方法和select_dtypes方法。Pandas具有非常丰富的数据处理功能,掌握这些基本操作可以极大地提高数据分析的效率。
极客笔记