pandas.DataFrame.drop() 函数用于删除指定的行或列。可以根据行的标签或列的名称来删除它们。该方法非常灵活,可以通过设置参数来决定删除行或列。本文主要介绍一下Pandas中pandas.DataFrame.drop方法的使用。

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 : 单个标签或类似列表

指定轴的替代方法(labels, axis=0 相当于index=labels)。

版本0.21.0中的新功能。

columns : 单个标签或类似列表

指定轴的替代方法( labels, axis=1相当于columns=labels)。

版本0.21.0中的新功能。

level : int或level name,可选

对于MultiIndex,将从中删除标签的级别。

inplace : bool,默认为False

如果为True,则执行就地操作并返回None。

errors  : {‘ignore’, ‘raise’},,默认'raise'

如果“忽略”,则禁止错误,仅删除现有标签。

返回

DataFrame

没有删除索引或列标签的DataFrame。

Raises

KeyError异常

如果在所选轴中找不到任何标签。

例子

1)删除指定的列

通过 axis=1columns 参数来删除列。

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=0index 参数来删除行。

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)

推荐文档

相关文档

大家感兴趣的内容

随机列表