DataFrame.drop(self,labels = None,axis = 0,index = None,columns = None,level = None,inplace = False,errors ='raise' )
从行或列中删除指定的标签。
通过指定标签名称和相应的轴,或直接指定索引或列名称来删除行或列。使用多索引时,可以通过指定级别来删除不同级别上的标签。
参数: | labels : 单个标签或类似列表 要删除的索引或列标签。 axis : {0或'index',1或'columns'},默认为0 是否从索引(0或'索引')或列(1或'列')中删除标签。 index : 单个标签或类似列表 指定轴的替代方法( 版本0.21.0中的新功能。 columns : 单个标签或类似列表 指定轴的替代方法( 版本0.21.0中的新功能。 level : int或level name,可选 对于MultiIndex,将从中删除标签的级别。 inplace : bool,默认为False 如果为True,则执行就地操作并返回None。 errors : 如果“忽略”,则禁止错误,仅删除现有标签。 |
返回: | DataFrame 没有删除索引或列标签的DataFrame。 |
Raises: | KeyError异常 如果在所选轴中找不到任何标签。 |
例子
1)删除指定的列
通过 axis=1
或 columns
参数来删除列。
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['A', 'B', 'C', 'D'])
print("原始 DataFrame:")
print(df)
# 删除列 'B' 和 'C',通过 axis=1 参数
df1 = df.drop(['B', 'C'], axis=1)
print("\n删除列 'B' 和 'C' 后的 DataFrame:")
print(df1)
# 也可以使用 columns 参数达到相同效果
df2 = df.drop(columns=['B', 'C'])
print("\n使用 columns 参数删除列 'B' 和 'C' 后的 DataFrame:")
print(df2)
2)删除指定的行
通过 axis=0
或 index
参数来删除行。
import pandas as pd
import numpy as np
# 创建 DataFrame
df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['A', 'B', 'C', 'D'])
print("原始 DataFrame:")
print(df)
# 删除索引为 0 和 1 的行
df3 = df.drop([0, 1])
print("\n删除索引 0 和 1 后的 DataFrame:")
print(df3)
3)inplace=True
修改原 DataFrame
使用 inplace=True
可以直接在原 DataFrame 上进行修改,而不返回新的 DataFrame。
import pandas as pd
# 创建 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
# 原地删除列 C
df.drop(columns=['C'], inplace=True)
print("\n删除列 C 后的原 DataFrame:")
print(df)
4)忽略找不到的列或行 (errors='ignore'
)
如果指定的列或行不存在,可以通过设置 errors='ignore'
来避免抛出错误。
import pandas as pd
# 创建 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
# 尝试删除不存在的列 'D',但不会抛出错误
df3 = df.drop(columns=['D'], errors='ignore')
print("\n尝试删除不存在的列 'D',但不会报错:")
print(df3)
5)删除 MultiIndex
DataFrame 的列和/或行示例
import pandas as pd
import numpy as np
# 创建 MultiIndex DataFrame
midx = pd.MultiIndex(levels=[['lama', 'cow', 'falcon'],
['speed', 'weight', 'length']],
codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
[0, 1, 2, 0, 1, 2, 0, 1, 2]])
df_multi = pd.DataFrame(index=midx, columns=['big', 'small'],
data=[[45, 30], [200, 100], [1.5, 1], [30, 20],
[250, 150], [1.5, 0.8], [320, 250],
[1, 0.8], [0.3, 0.2]])
print("\nMultiIndex DataFrame:")
print(df_multi)
# 删除 'cow' 行和 'small' 列
df4 = df_multi.drop(index='cow', columns='small')
print("\n删除 'cow' 行和 'small' 列后的 DataFrame:")
print(df4)
# 删除 level=1 中索引为 'length' 的行
df5 = df_multi.drop(index='length', level=1)
print("\n删除 level=1 中 'length' 行后的 DataFrame:")
print(df5)