使用多个'取消堆叠DataFrame' Python Pandas中的列

时间:2016-08-02 22:22:38

标签: python pandas stack pivot-table

假设我有一个如下所示的DataFrame:

     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()函数,但是数据透视表不能使用字母值,并且取消堆栈函数不像我认为的那样工作(即堆栈的反转)。我假设您可以逐列拆分并在最后加入数据帧,我主要遇到的问题是unstack函数及其正在做什么。有关最佳方法的任何想法吗?

1 个答案:

答案 0 :(得分: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