【问题标题】:Pivot full dataframe using Pandas [duplicate]使用 Pandas 透视完整数据框 [重复]
【发布时间】: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)

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

【问题讨论】:

    标签: python pandas numpy


    【解决方案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 是的,或者您可以使用之前使用的线路。我猜同样的事情
    猜你喜欢
    • 2020-05-21
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 2020-11-09
    • 2019-02-14
    • 2016-01-15
    相关资源
    最近更新 更多