От pd.MultiIndex к нескольким фреймам данных - PullRequest
1 голос
/ 08 апреля 2020

Существует ли краткий способ преобразования мультииндексированного фрейма данных в несколько фреймов данных, по одному на каждую комбинацию мультииндекса.

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 метода.

Примечание: у вас могут быть разные размеры и значения для каждого уровня.

...