如何在pandas中删除列

如何在pandas中删除列

参考:pandas drop column

在数据分析过程中,我们经常需要对数据进行清洗和预处理。其中,删除不必要的列是一个常见的操作。在Python的pandas库中,我们可以使用drop方法来删除DataFrame中的列。本文将详细介绍如何在pandas中删除列,并提供一些示例代码。

1. 基本用法

在pandas中,drop方法可以用来删除DataFrame中的行或列。其基本语法如下:

DataFrame.drop(labels=None, axis=0, index=None, columns=None, inplace=False)

其中,labels是要删除的行或列的标签;axis表示删除行还是列,0表示行,1表示列;indexcolumns分别表示要删除的行和列的标签,这两个参数是labelsaxis的替代方式;inplace表示是否在原地修改数据。

例如,我们有一个包含三列的DataFrame:

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

print(df)

Output:

如何在pandas中删除列

如果我们想要删除age列,可以使用以下代码:

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop('age', axis=1)
print(df)

Output:

如何在pandas中删除列

或者使用columns参数:

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(columns='age')
print(df)

Output:

如何在pandas中删除列

注意,这两种方式都不会修改原始的DataFrame,而是返回一个新的DataFrame。如果你想要在原地修改数据,可以设置inplace=True

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop('age', axis=1, inplace=True)
print(df)

Output:

如何在pandas中删除列

2. 删除多列

如果你想要删除多列,可以传入一个列标签的列表。例如,我们想要删除agecity两列,可以使用以下代码:

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(['age', 'city'], axis=1)
print(df)

Output:

如何在pandas中删除列

或者使用columns参数:

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(columns=['age', 'city'])
print(df)

Output:

如何在pandas中删除列

同样,这两种方式都不会修改原始的DataFrame,而是返回一个新的DataFrame。如果你想要在原地修改数据,可以设置inplace=True

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(['age', 'city'], axis=1, inplace=True)
print(df)

Output:

如何在pandas中删除列

3. 根据条件删除列

有时候,我们想要根据某种条件来删除列。例如,我们想要删除所有包含缺失值的列。这时,我们可以先使用isnull方法来检查每一列是否包含缺失值,然后使用any方法来检查每一列是否有True(即是否包含缺失值),最后使用drop方法来删除这些列。

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(df.columns[df.isnull().any()], axis=1)
print(df)

Output:

如何在pandas中删除列

或者使用columns参数:

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(columns=df.columns[df.isnull().any()])
print(df)

Output:

如何在pandas中删除列

同样,这种方式也不会修改原始的DataFrame,而是返回一个新的DataFrame。如果你想要在原地修改数据,可以设置inplace=True

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(df.columns[df.isnull().any()], axis=1, inplace=True)
print(df)

Output:

如何在pandas中删除列

4. 删除非数值列

在某些情况下,我们可能只对数值列感兴趣,因此想要删除所有非数值列。这时,我们可以使用select_dtypes方法来选择所有数值列,然后使用drop方法来删除这些列。

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(df.select_dtypes(include='object').columns, axis=1)
print(df)

Output:

如何在pandas中删除列

或者使用columns参数:

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(columns=df.select_dtypes(include='object').columns)
print(df)

Output:

如何在pandas中删除列

同样,这种方式也不会修改原始的DataFrame,而是返回一个新的DataFrame。如果你想要在原地修改数据,可以设置inplace=True

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df.drop(df.select_dtypes(include='object').columns, axis=1, inplace=True)
print(df)

Output:

如何在pandas中删除列

5. 删除重复列

在某些情况下,我们的数据可能包含重复的列,我们想要删除这些重复的列。这时,我们可以使用T属性来转置DataFrame(即将行和列互换),然后使用duplicated方法来检查每一列是否重复,最后使用drop方法来删除这些列。

import pandas as pd

data = {
    'name': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
}
df = pd.DataFrame(data)

df = df.T.drop_duplicates().T
print(df)

Output:

如何在pandas中删除列

这种方式会修改原始的DataFrame,因为我们在转置后直接对DataFrame进行了修改。

总结

本文详细介绍了如何在pandas中删除列,包括删除单列、删除多列、根据条件删除列、删除非数值列和删除重复列等。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程