0

我想在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' 
4

1 回答 1

0
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
于 2021-02-02T18:49:31.550 回答