我希望能夠使用多級標準(邏輯AND加入標準)從多索引數據框對象中刪除行。根據級別之間的'AND'條件刪除DataFrame的多索引行
考慮由下式給出的熊貓數據幀對象:
import pandas as pd
df = pd.DataFrame(data = [[1,'x'],[2,'x'],[1,'y'],[2,'y']],
index=pd.MultiIndex(levels=[['A','B'],['a','b']],
labels=[[0,1,0,1],[0,1,1,0]],
names=['idx0','idx1']))
print(df)
輸出:
0 1
idx0 idx1
A a 1 x
B b 2 x
A b 1 y
B a 2 y
我想消除的行,其中'idx0'=='A'
和'idx1'=='a'
,所以最後的結果是:
0 1
idx0 idx1
B b 2 x
a 2 y
A b 1 y
在我看來,這似乎不能用df.drop()
方法完成。 A「迂迴」的方式,其給出正確的結果是要做到:
df = pd.concat([df.drop(labels='A',level=0),df.drop(labels='a',level=1)])
df = df.drop_duplicates()
但我估計,必須有一個更好的辦法...