Как расплавить колонну первого уровня в мультииндекс с пандами - PullRequest
0 голосов
/ 28 июня 2018

У меня есть этот мультииндексный фрейм данных:

df=pd.DataFrame(np.zeros((3,6)))
df.columns=pd.MultiIndex.from_arrays([['a','a','b','b','c','c'],[1,2,1,2,1,2]])
df['a']=10
df['b']=20
df['c']=40

print(df)

Out[10]: 
    a       b       c    
    1   2   1   2   1   2
0  10  10  20  20  40  40
1  10  10  20  20  40  40
2  10  10  20  20  40  40

И я хочу получить это:

Out[10]: 

   names  1   2
0      a  10  10
1      a  10  10
2      a  10  10
0      b  20  20
1      b  20  20
2      b  20  20
0      c  40  40
1      c  40  40
2      c  40  40

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

Я пытался сделать это с помощью команды melt, но всегда получаю сообщение об ошибке.

Есть идеи?

1 Ответ

0 голосов
/ 28 июня 2018

Использование unstack:

print(df.unstack()
        .unstack(level=1)
        .reset_index(level=1, drop=True)
        .rename_axis('names')
        .reset_index())
  names   1   2
0     a  10  10
1     a  10  10
2     a  10  10
3     b  20  20
4     b  20  20
5     b  20  20
6     c  40  40
7     c  40  40
8     c  40  40
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...