如何将pandas透视表(pivot_table)中的数值字段调整为按行展示
你需要将透视表列层级中代表指标的Price、Transactions层,从列索引移到行索引即可,有两种常用实现方式:
方式1:在原有代码基础上调用stack调整层级
原有代码生成透视表后,加一行堆叠操作即可,若需要调整Transactions和Price的显示顺序,修改values参数的先后顺序即可:
# 把values调整为Transactions在前,和预期输出顺序一致 table = pd.pivot_table(data=df,index=['Name'],columns=['Date'],values=['Transactions','Price']) # 把列索引最上层(level=0,也就是指标层)堆叠到行索引 table = table.stack(level=0)
方式2:先融合数据再生成透视表,一步得到结果
先通过melt把两个指标列转为行维度,再做透视:
# 先把宽表转成长表,把Transactions、Price转为行维度的指标 df_melt = df.melt(id_vars=['Name','Date'], value_vars=['Transactions','Price'], var_name='Indicator') # 直接按Name+指标做行索引,日期做列索引生成透视表 table = df_melt.pivot(index=['Name','Indicator'], columns='Date', values='value')
两种方法输出的结果都和你预期的格式完全匹配。
内容的提问来源于stack exchange,提问作者Shadeonline
相关产品推荐
相关产品推荐

