熊猫将某些列数据转换为行

时间:2020-08-20 02:39:14

标签: python pandas pivot-table

我检查了关于stackoverflow的几乎所有与将列转换为行有关的主题,但没有找到解决我问题的方法,

所以我的数据框如下所示:

Year  Week Product sessions conversion
19Y  01W    P01      30        10%
19Y  02W    P01      20        12%
19Y  01W    P02      40        15%
19Y  02W    P02      50        18%
20Y  01W    P01      15        12%
20Y  02W    P01      25        15%
20Y  01W    P02      35        16%
20Y  02W    P02      45        17%

我想要的输出是:

   product             19Y01W 20Y01W 19Y02W 20Y02W
    P01    session      30     15      20     25
           conversion   10%    12%     12%    15%
    P02    session      40     35      50     35
           conversion   15%    16%     18%    17%

我试图通过pivot_table,groubpy或unstack来实现,但是没有成功

1 个答案:

答案 0 :(得分:2)

尝试unstackstack

df['YW'] = df['Year']+df['Week']
df.drop(['Year','Week'], axis=1, inplace=True)
df1 = df.set_index(['Product','YW']).unstack(level=1).stack(level=0)
df1.loc[:, sorted(df1.columns.to_list(), key= lambda x: x[2:])]