【发布时间】:2020-05-30 15:12:34
【问题描述】:
我有一个如下所示的示例数据框
df1 = pd.DataFrame({'Gender':['Male','Male','Male','Male','Female','Female','Female','Female','Male','Male','Male','Male','Female','Female','Female','Female'],
'Year' :[2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,2009,2009],
'rate':[2.3,3.2,4.5,6.7,5.6,3.2,3.5,2.6,2.3,3.2,4.5,6.7,5.6,3.2,3.5,2.6],
'Heading':['TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123',
'TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456'],
'target':[31.2,33.4,33.4,35.2,35.2,36.4,36.4,37.2,31.2,33.4,33.4,35.2,35.2,36.4,36.4,37.2],
'day_type':['wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend']})
我想转置/旋转它们以获得如下所示的输出,但对于我的代码,它会引发如下所示的错误
df1.pivot(index='Year', columns='Heading', values='rate')
在 SO post 的帮助下,我写了这篇文章,但是对于 3 列,我不知道如何使它工作?
df1 = df1.pivot_table(index=['Year','Gender','day_type'],columns='Heading',values='rate').unstack()
df1.columns = ['_'.join(i) for i in df1.columns.tolist()]
我希望我的输出如下所示,其中每一年都作为一行,而该年份的所有相应条目都作为列。
请注意我没有填写值,因为表格列结构更重要。
【问题讨论】:
标签: python python-3.x pandas dataframe pandas-groupby