schneidet Ich habe einen Pandas Datenrahmen mit 3 Ebenen eines MultiIndex. Ich versuche, Zeilen dieses Datenrahmens gemäß einer Liste von Werten herauszuziehen, die zwei der Ebenen entsprechen.Wie man einen MultiIndex DataFrame mit dem MultiIndex eines anderen
Ich habe so etwas wie dies:
ix = pd.MultiIndex.from_product([[1, 2, 3], ['foo', 'bar'], ['baz', 'can']], names=['a', 'b', 'c'])
data = np.arange(len(ix))
df = pd.DataFrame(data, index=ix, columns=['hi'])
print(df)
hi
a b c
1 foo baz 0
can 1
bar baz 2
can 3
2 foo baz 4
can 5
bar baz 6
can 7
3 foo baz 8
can 9
bar baz 10
can 11
Jetzt möchte ich alle Zeilen nehmen, wo Indexniveaus 'b' und 'c' in diesem Index sind:
ix_use = pd.MultiIndex.from_tuples([('foo', 'can'), ('bar', 'baz')], names=['b', 'c'])
dh Werte von hi
mit ('foo', 'can')
oder ('bar', 'baz')
in den Ebenen b
bzw. c
: (1, 2, 5, 6, 9, 10)
.
Also würde ich gerne eine slice(None)
auf der ersten Ebene nehmen und bestimmte Tupel auf der zweiten und dritten Ebene herausziehen.
Anfangs dachte ich, dass das Übergeben eines Multi-Index-Objekts an .loc die Werte/Ebenen herausziehen würde, die ich wollte, aber das funktioniert nicht. Was ist der beste Weg, um so etwas zu tun?
ich immer daran zu arbeiten, ein paar verschiedene Versuche unternommen hatte. Ich denke, ich habe einen ordentlichen Workaround für die Tatsache gefunden, dass dies momentan etwas schwierig zu sein scheint. Versuch es! – LondonRob