我检查了关于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来实现,但是没有成功
答案 0 :(得分:2)
尝试unstack
和stack
:
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:])]