我有以下数据框:
date col_1 col_2
(exchange, symbol)
CME,abc 2015-01-02 435 5678
2015-01-03 754 236
JSE,xyz 2015-01-02 15 6871
2015-01-03 7258 7236
有一个多指数,即交换+符号。我需要删除特定索引的所有行。例如:删除所有(CME,abc)行。
通常当我需要根据条件删除行时,我会这样做:
df = df[df['col_1'] != 754]
但是,这似乎只适用于基于特定列条件的行删除。我需要做的是同样的事情,但基于某个索引。
答案 0 :(得分:2)
您可以使用drop
指定要删除的标签。如果是多索引,您可以将标签作为元组传递
使用虚拟示例:
In [46]: df = pd.DataFrame(np.random.randn(4,2), index=pd.MultiIndex.from_arrays([['a', 'a', 'b', 'b'],[1,1,2,2]]))
In [47]: df
Out[47]:
0 1
a 1 0.510701 0.534342
1 0.229360 -1.403280
b 2 -0.218433 0.619108
2 -0.679179 -0.195241
In [48]: df.drop([('a', 1)])
Out[48]:
0 1
b 2 -0.218433 0.619108
2 -0.679179 -0.195241
顺便说一句,您也可以在索引上应用df[df['col_1'] != 754]
的逻辑。这将给出df[df.index != 754]
,尽管这不适用于多索引
答案 1 :(得分:1)
您可以将索引标签的元组传递给drop
In [117]:
df1.drop(('CME','abc'))
Out[117]:
date col_1 col_2
exchange symbol
JSE xyz 2015-01-02 15 6871
xyz 2015-01-03 7258 7236