Pandas从数据框中删除多列

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具有非常丰富的数据处理功能,掌握这些基本操作可以极大地提高数据分析的效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程