【问题标题】:To transpose and style dataframe in python pandas在 python pandas 中转置和样式化数据框
【发布时间】:2021-06-29 16:08:01
【问题描述】:

我有一个如下顺序的数据框

Date      Material    Qty
5/15/21      J1       50
5/16/21      K2       40
6/02/21      K3       30
7/03/21      R1       90

变成这个

Material  5/15/21   5/16/21  6/02/21 7/03/21
J1         50       
K2                    40
K3                             30
R1                                      90

【问题讨论】:

    标签: python dataframe transpose


    【解决方案1】:

    试试pivot

    df.pivot('Material', 'Date', 'Qty')
    
    Date      5/15/21  5/16/21  6/02/21  7/03/21
    Material                                    
    J1           50.0      NaN      NaN      NaN
    K2            NaN     40.0      NaN      NaN
    K3            NaN      NaN     30.0      NaN
    R1            NaN      NaN      NaN     90.0
    

    unstack

    df.set_index(['Date', 'Material']).unstack(level=0)
    

    如果你想对重复值求和

    d = {'Date': {0: '5/15/21',
      1: '5/16/21',
      2: '6/02/21',
      3: '7/03/21',
      4: '5/15/21'},
     'Material': {0: 'J1', 1: 'K2', 2: 'K3', 3: 'R1', 4: 'J1'},
     'Qty': {0: 50.0, 1: 40.0, 2: 30.0, 3: 90.0, 4: 20}}
    
    df = pd.DataFrame(d)
    
    df.groupby(['Date', 'Material'])['Qty'].sum().unstack(level=0)
    

    【讨论】:

    • 非常感谢!!!如果我 J1 与不同的数量重复,我想添加并保存在单个值中。
    • @RahnaK.M 同一日期的数量不同?如果是这样,df.groupby(['Date', 'Material'])['Qty'].sum().unstack(level=0)
    • sum() 为我工作。但是在按月分组后,排序如下:Aug21、July21 和 June21。如何纠正这种情况?
    • @RahnaK.M 您需要先将日期列转换为日期时间格式。
    • 我通过关闭组 By.d=data.groupby([' Month', 'Material'],sort=False)['Qty'].sum().unstack 中的排序解决了问题(级别=0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多