Существует ли краткий способ преобразования мультииндексированного фрейма данных в несколько фреймов данных, по одному на каждую комбинацию мультииндекса.
arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
df = pd.DataFrame(np.random.randn(8, 4), index=arrays)
df
>> 0 1 2 3
bar one -0.424972 0.567020 0.276232 -1.087401
two -0.673690 0.113648 -1.478427 0.524988
baz one 0.404705 0.577046 -1.715002 -1.039268
two -0.370647 -1.157892 -1.344312 0.844885
foo one 1.075770 -0.109050 1.643563 -1.469388
two 0.357021 -0.674600 -1.776904 -0.968914
qux one -1.294524 0.413738 0.276662 -0.472035
two -0.013960 -0.362543 -0.006154 -0.923061
Я бы хотел извлечь эти DataFrame
:
df.loc[('bar', slice(None)), :]
>>
0 1 2 3
bar one 0.965409 -1.124317 -0.634161 -0.671607
two -2.357019 -1.541925 0.776500 1.423822
Более того, я хотел бы извлечь все кадры данных с уровня 0 до уровня n-1
на MultiIndex
, что-то вроде explode
метода.
Примечание: у вас могут быть разные размеры и значения для каждого уровня.