使用 Pandas 透视完整数据框 [重复]

Posted

技术标签:

【中文标题】使用 Pandas 透视完整数据框 [重复]【英文标题】:Pivot full dataframe using Pandas [duplicate] 【发布时间】:2021-12-12 09:49:45 【问题描述】:

我有一个数据集 df,我想在其中旋转数据以使行值变为列。

数据

id  Date    consumed    available       
aa  q122    727.2       272.8       
aa  q222    975.7       24.3        
bb  q122    0           1000        
bb  q222    117.3       882.7       
                    
                    

希望

id      q122_consumed   q122_available  q222_consumed   q222_available  
aa      727.2           272.2           975.7           24.3    
bb      0               1000            117.3           882.7   

正在做

out = df[['id', 'Date']].join(
        df.assign(consumed=df['consumed'],
                  available=df['available'])
          .groupby('id')[['consumed', 'available']].cumsum()
    ).pivot('id', 'Date', ['consumed', 'available'])

out.columns = out.columns.to_flat_index().map('_'.join)

但是,我没有得到想要的输出。任何建议表示赞赏。

【问题讨论】:

【参考方案1】:

使用pivot方法:

df.pivot(index="id", columns="Date", values=["consumed", "available"])

# output
     consumed        available
Date     q122   q222      q122   q222
id
aa      727.2  975.7     272.8   24.3
bb        0.0  117.3    1000.0  882.7

【讨论】:

谢谢。有什么方法可以制作单独的列吗?消耗 q122 消耗 q222 可用 q122 可用 q222? df.columns = ['_'.join(c) for c in df.columns] ? 我删除了关于列的答案 - @luigigi 做得更好:) 谢谢 Pav3k。谢谢@luigigi - 我是在 Pav3k 的行之后添加这一行吗? @Lynn 是的,或者您可以使用之前使用的线路。我猜同样的事情

以上是关于使用 Pandas 透视完整数据框 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas 时如何打印多达 3,000 行数据框 [重复]

熊猫数据透视表到数据框[重复]

无法使用 Pandas read_excel() 为 xlsx 文件下载完整行 [重复]

如何使用数据透视表 Python 创建重复行

如何将熊猫数据透视表转换为 JSON [重复]

pandas 数据框到 dict [重复]