一种可能的解决方案,其步骤如下:
colnames = ['YEAR', 'MONTH', 'VL_CD76', 'VL_CD92']
(df.set_index(['YEAR', 'CD_PRD']).stack()
.unstack(1).reset_index().rename_axis(None, axis=1)
.set_axis(colnames, axis=1)
.pipe(lambda x: x.assign(MONTH = x['MONTH'].str.replace('VL_', ''))))
输出:
YEAR MONTH VL_CD76 VL_CD92
0 2022 JAN 10000 15000
1 2022 FEB 8000 7500
2 2022 MAR 170000 86000
3 2022 APR 58000 1200
4 2023 JAN 8000 12000
5 2023 FEB 12000 4560
6 2023 MAR 15000 10480
7 2023 APR 5000 15600
8 2024 JAN 400 56000
9 2024 FEB 8000 10200
10 2024 MAR 45800 150000
11 2024 APR 120 1500