如何将数据帧中的长格式转换为宽格式?

2024-05-21 03:23:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有数据帧df在下面的格式

 Date   TLRA_CAPE      TLRA_Pct   B_CAPE     B_Pct    RC_CAPE     RC_Pct
 1/1/2000  10              0.20        30        0.40        50       0.60
 2/1/2000  15              0.25        35        0.45        55       0.65
 3/1/2000  17              0.27        37        0.47        57       0.6

我需要转换成下面的格式

 Date      Variable     CAPE     Pct   
 1/1/2000   TLRA        10       0.20
 2/1/2000   TLRA        15       0.25
 3/1/2000   TLRA         17      0.27 
1/1/2000    B            30      0.40
2/1/2000    B            35      0.45
3/1/2000    B            37      0.47
1/1/2000    RC           50      0.60
2/1/2000    RC            55     0.65
3/1/2000    RC            57     0.6

我正在努力转换成所需的格式。我试过使用pd.meltpd.pivot,但这些都不起作用


Tags: 数据dfdate格式variablepdpivotrc
1条回答
网友
1楼 · 发布于 2024-05-21 03:23:35

在更改列之后,您可以使用wide_to_long,并且您同时拥有PCT和PCT,我假设这是打字错误,如果没有,则使用df.columns=df.columns.str.upper()

df=df.set_index('Date')
df.columns=df.columns.str.split('_').map(lambda x : '_'.join(x[::-1]))
pd.wide_to_long(df.reset_index(),['CAPE','Pct'],i='Date',j='Variable',sep='_',suffix='\w+')
Out[63]: 
                   CAPE   Pct
Date     Variable            
1/1/2000 TLRA        10  0.20
2/1/2000 TLRA        15  0.25
3/1/2000 TLRA        17  0.27
1/1/2000 B           30  0.40
2/1/2000 B           35  0.45
3/1/2000 B           37  0.47
1/1/2000 RC          50  0.60
2/1/2000 RC          55  0.65
3/1/2000 RC          57  0.60

相关问题 更多 >