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)