从行或列中删除指定的标签。
通过指定标签名称和相应的轴,或通过直接指定索引或列名称来删除行或列。使用multi-index时,可以通过指定级别来删除不同级别上的标签。
参数:
labels:single label 或 list-like要删除的索引或列标签。
axis:{0 或 ‘index’, 1 或 ‘columns’}, 默认为 0是从索引(0或‘index’)还是从列(1或‘columns’)删除标签。
index:single label 或 list-like替代指定轴(labels, axis=0相当于index=labels)。
0.21.0版中的新功能。
columns:single label 或 list-like替代指定轴(labels, axis=1相当于columns=labels)。
0.21.0版中的新功能。
level:int 或 level name, 可选参数对于MultiIndex,将从中删除标签的级别。
inplace:bool, 默认为 False如果为True,则执行就地操作并返回None。
errors:{‘ignore’, ‘raise’}, 默认为 ‘raise’如果为‘ignore’,请抑制错误并仅丢弃现有标签。
返回值:
DataFrame没有删除索引或列标签的DataFrame。
异常:
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