在pandas中,有多种方法可以删除列,具体方法及适用情况如下:
-
drop
方法- 适用情况: 这是最常用的方法,可以灵活地删除单列或多列。
- 用法:
df.drop('column_name', axis=1, inplace=True) # 删除单列 df.drop(['column1', 'column2'], axis=1, inplace=True) # 删除多列
- 参数:
labels
: 要删除的列名或列名列表。axis
: 设为1表示按列删除。inplace
: 如果为True,直接在原DataFrame上进行修改;如果为False,返回修改后的新DataFrame。
-
使用
del
关键字- 适用情况: 当需要删除单列时,使用
del
关键字比较简洁。 - 用法:
del df['column_name']
- 适用情况: 当需要删除单列时,使用
-
使用
pop
方法- 适用情况:
pop
方法不仅可以删除列,还可以返回被删除的列,适用于需要删除并获取该列数据的情况。 - 用法:
column_data = df.pop('column_name')
- 适用情况:
-
使用列索引删除
- 适用情况: 当需要删除多列并且这些列的索引已知时,可以直接通过列索引进行删除。
- 用法:
df = df.loc[:, df.columns != 'column_name'] # 删除单列 df = df.loc[:, ~df.columns.isin(['column1', 'column2'])] # 删除多列
示例代码
import pandas as pd
# 创建示例DataFrame
data = {
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
}
df = pd.DataFrame(data)
print("原始DataFrame:\n", df)
# 1. 使用drop方法删除列
df1 = df.drop('A', axis=1)
print("\n使用drop方法删除列A:\n", df1)
# 2. 使用del关键字删除列
df2 = df.copy()
del df2['B']
print("\n使用del关键字删除列B:\n", df2)
# 3. 使用pop方法删除列
df3 = df.copy()
popped_column = df3.pop('C')
print("\n使用pop方法删除列C:\n", df3)
print("被删除的列C数据:\n", popped_column)
# 4. 使用列索引删除列
df4 = df.loc[:, df.columns != 'A']
print("\n使用列索引删除列A:\n", df4)
df5 = df.loc[:, ~df.columns.isin(['B', 'C'])]
print("\n使用列索引删除列B和C:\n", df5)
输出结果
原始DataFrame:
A B C
0 1 4 7
1 2 5 8
2 3 6 9
使用drop方法删除列A:
B C
0 4 7
1 5 8
2 6 9
使用del关键字删除列B:
A C
0 1 7
1 2 8
2 3 9
使用pop方法删除列C:
A B
0 1 4
1 2 5
2 3 6
被删除的列C数据:
0 7
1 8
2 9
Name: C, dtype: int64
使用列索引删除列A:
B C
0 4 7
1 5 8
2 6 9
使用列索引删除列B和C:
A
0 1
1 2
2 3
。