【问题标题】:Pandas pivot/stack dataframe without aggregation没有聚合的 Pandas 枢轴/堆栈数据帧
【发布时间】:2021-05-06 22:44:00
【问题描述】:

我想在不聚合的情况下旋转熊猫DataFrame。我尝试使用pivot/stack,但没有得到我想要的。

data = {'comp_id': ['0001', '0001', '0002', '0003', '0003', '0003'],
        'stk': ['0001', '0001B', '0002', '0003', '0003B', '62208'],
        'list_date': ['20150101', '20150331', '20130425', '20170401', '20170501', '20170601'],
        'ABH': ['A', 'B', 'B', 'A', 'B', 'H']}

df = pd.DataFrame(data)
df.set_index(['comp_id', 'ABH'])
print(df)

  comp_id    stk list_date ABH
0    0001   0001  20150101   A
1    0001  0001B  20150331   B
2    0002   0002  20130425   B
3    0003   0003  20170401   A
4    0003  0003B  20170501   B
5    0003  62208  20170601   H

我想使用comp_id 作为索引来透视这些数据。 我想要的输出DataFrame:

                     stk          |            list_date         
ABH          A        B       H   |     A          B           H     
comp_id                           |
---------------------------------------------------------------------
'0001'     '0001'  '0001B'        | '20150101' '20150331' 
'0002'              '0002'        |            '20130425'
'0003'     '0003'  '0003B' '62208'| '20170401' '20170501'  '20170601' 

【问题讨论】:

    标签: python-3.x dataframe stack pivot multi-index


    【解决方案1】:
    df = df.stack(level=[0], dropna=False)
    df = df.unstack(level=[2, 1], fill_value='').sort_index(axis=1)
    df = df[['stk', 'list_date']]
    print(df)
    
              stk               list_date
    ABH         A      B      H         A         B         H
    comp_id
    0001     0001  0001B         20150101  20150331
    0002            0002                   20130425
    0003     0003  0003B  62208  20170401  20170501  20170601
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多