如何在Pandas数据框中将长格式转换为宽格式?

时间:2019-04-04 17:23:34

标签: python pandas dataframe

我的数据框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,但这些都不起作用。

1 个答案:

答案 0 :(得分:2)

更改列后,您可以使用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