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异常 如果在所选轴中找不到任何标签。 |
例子
>>> df = pd.DataFrame(np.arange(12).reshape(3, 4),
... columns=['A', 'B', 'C', 'D'])
>>> df
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
删除列
>>> df.drop(['B', 'C'], axis=1)
A D
0 0 3
1 4 7
2 8 11
>>> df.drop(columns=['B', 'C'])
A D
0 0 3
1 4 7
2 8 11
按索引删除一行
>>> df.drop([0, 1])
A B C D
2 8 9 10 11
删除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 = 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]])
>>> df
big small
lama speed 45.0 30.0
weight 200.0 100.0
length 1.5 1.0
cow speed 30.0 20.0
weight 250.0 150.0
length 1.5 0.8
falcon speed 320.0 250.0
weight 1.0 0.8
length 0.3 0.2
>>> df.drop(index='cow', columns='small')
big
lama speed 45.0
weight 200.0
length 1.5
falcon speed 320.0
weight 1.0
length 0.3
>>> df.drop(index='length', level=1)
big small
lama speed 45.0 30.0
weight 200.0 100.0
cow speed 30.0 20.0
weight 250.0 150.0
falcon speed 320.0 250.0
weight 1.0 0.8