pandas 枢纽分析数据行,同时保留所有其他数据行

jjjwad0x  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(166)

我在一个表中有许多列,但只有一列需要使用其值进行透视。它看起来像这样:

OrderNumber  Item  YearMonth  Total
1            1     2019_01    20
1            2     2019_01    40
1            1     2019_02    30
2            1     2019_02    50

结果输出应为:

OrderNumber  Item  2019_01    2019_02   Total
1            1     60         30        20
1            2     60         30        40
1            1     60         30        30
2            1     0          50        50

基本上,在保留所有列的情况下,对每个月的订单号求和。有没有办法做到这一点?我使用的是Pandas

6jygbczu

6jygbczu1#

IIUC,您需要一个pivot_table + merge

out = (df
  .merge(df.pivot_table(index='OrderNumber', columns='YearMonth',
                        values='Total', aggfunc='sum', fill_value=0),
         on='OrderNumber')
  #.drop(columns='YearMonth') # uncomment to drop unused 'YearMonth'
  )

输出量:

OrderNumber  Item YearMonth  Total  2019_01  2019_02
0            1     1   2019_01     20       60       30
1            1     2   2019_01     40       60       30
2            1     1   2019_02     30       60       30
3            2     1   2019_02     50        0       50
pkbketx9

pkbketx92#

df.join(
    df.groupby(['OrderNumber', 'YearMonth'])['Total'].sum()
        .unstack(level=1,fill_value=0)
    , on='OrderNumber')
    
       OrderNumber  Item YearMonth  Total  2019_01  2019_02
    0            1     1   2019_01     20     60.0     30.0
    1            1     2   2019_01     40     60.0     30.0
    2            1     1   2019_02     30     60.0     30.0
    3            2     1   2019_02     50      0.0     50.0

相关问题