2016-08-02 1 views
2

Скажем, у меня есть DataFrame который выглядит следующим образом:Расшахтовочная DataFrame с несколькими колонками «значение» в Python панд

 keys sample verify 
0 foo  a  1  
1 bar  b  2  
2 monty  c  3  
3 foo  d  4  
4 bar  e  5 
5 monty  f  6 

То, что я хочу в этой форме:

 foo_1 bar_1 monty_1 foo_2 bar_2 monty_2 
0  a  b  c  1  2  3 
1  d  e  f  4  5  6 

Что является лучшим способом от распаковки? Я попробовал как pandas.pivot_table(), так и функцию pandas.unstack(), но сводная таблица не работает с алфавитными значениями, а функция unack не работает так, как я думаю, она должна (то есть инвертировать стек). Я предполагаю, что вы могли бы разбить столбец по столбцу и присоединиться к данным в конце, проблема, с которой я в основном сталкиваюсь, - это функция расстегивания и то, что она делает. Любые мысли о лучшем способе сделать это?

ответ

1
df2 = df.set_index('keys').T.reset_index(drop=True) \ 
    .T.groupby(level=0).apply(lambda df: df.reset_index(drop=True)) \ 
    .stack().unstack(1).T 

df2.columns = df2.columns.set_levels((df2.columns.levels[1] + 1).astype(str), level=1) 
df2.columns = df2.columns.to_series().str.join('_') 

df2 

enter image description here

+0

Работает отлично! Спасибо тонну – sfortney

+0

@sfortney рад, что я могу помочь – piRSquared

 Смежные вопросы

  • Нет связанных вопросов^_^