如何在Pandas DataFrame中删除单个或多个列
在Pandas DataFrame中删除列的6种实用方法
先创建一个示例DataFrame,方便后续演示:
import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9], 'D': [10, 11, 12], 'E': [13, 14, 15]} df = pd.DataFrame(data)
1. drop() 方法(最通用)
这是最常用的删除列方式,支持单列/多列删除,还能选择是否直接修改原DataFrame:
# 删除单个列 df.drop('A', axis=1, inplace=True) # 删除多个列(两种写法都可行) df.drop(['B', 'C'], axis=1, inplace=True) # 用columns参数更直观 df.drop(columns=['B', 'C'], inplace=True)
提示:如果不用inplace=True,方法会返回删除列后的新DataFrame,原DataFrame保持不变。
2. del 关键字(简单直接)
如果只需要删除单个列,用del最省事,直接修改原DataFrame:
del df['A']
3. pop() 方法(删除并获取列数据)
需要用到被删除列的数据时,用pop()最合适——它会删除指定列,同时返回该列的Series对象:
# 删除列A并把数据存起来 col_a_data = df.pop('A')
4. 反向选择保留列(适合删除大量列)
如果要删除的列很多,只需要保留少数几列,直接选择保留的列重新赋值即可:
# 仅保留A、B列,相当于删除C、D、E df = df[['A', 'B']]
5. loc 精准选择保留列
用loc可以更严谨地筛选列,还能通过反选排除指定列:
# 直接保留指定列 df = df.loc[:, ['A', 'B']] # 排除指定列(删除C、D列) df = df.loc[:, ~df.columns.isin(['C', 'D'])]
6. iloc 通过列索引删除
知道列的位置索引时,可以用iloc按位置删除,适合列名不固定但位置确定的场景:
# 保留第0、1、4列(对应A、B、E),相当于删除C、D df = df.iloc[:, [0, 1, 4]] # 或者用切片保留前两列(A、B) df = df.iloc[:, :2]
内容的提问来源于stack exchange,提问作者Aditi Singh
相关产品推荐
相关产品推荐

