将 pandas df 与堆叠级别值归一化
normalizing pandas df with stacking level values together
我有以下 pandas df,我想对其进行归一化:
df
id technology co2_var co2_fix eta_elec
0 1 lignite 0.39960 17.610 0.434
1 2 hard_coal 0.33012 11.660 0.390
规范化的 df 应如下所示:
df_norm
id technology parameter value unit
0 1 lignite co2_var 0.39960
1 2 lignite co2_fix 17.610
2 3 lignite eta_elec 0.434
3 4 hard_coal co2_var 0.33012
4 5 hard_coal co2_fix 11.660
5 6 hard_coal eta_elec 0.390
因此 df
的级别值(在 technology
之后)应该堆叠在名为 parameter
的级别中,它们的值应该放在级别 value
下,并且应该创建一个新级别 unit
为空。
我该怎么做?
@W-B ty for df.melt(['id', 'technology']).assign(unit='')
id technology variable value unit
0 1 lignite co2_var 0.39960
1 2 hard_coal co2_var 0.33012
2 1 lignite co2_fix ...
3 2 hard_coal co2_fix ...
问题:
相同的 id 号,实际上这命令 df 关于变量(参数)而不是技术
IIUC
df=df.melt(['id', 'technology']).assign(unit='').sort_values(['id','technology'])
df.id=np.arange(len(df))+1
我有以下 pandas df,我想对其进行归一化:
df
id technology co2_var co2_fix eta_elec
0 1 lignite 0.39960 17.610 0.434
1 2 hard_coal 0.33012 11.660 0.390
规范化的 df 应如下所示:
df_norm
id technology parameter value unit
0 1 lignite co2_var 0.39960
1 2 lignite co2_fix 17.610
2 3 lignite eta_elec 0.434
3 4 hard_coal co2_var 0.33012
4 5 hard_coal co2_fix 11.660
5 6 hard_coal eta_elec 0.390
因此 df
的级别值(在 technology
之后)应该堆叠在名为 parameter
的级别中,它们的值应该放在级别 value
下,并且应该创建一个新级别 unit
为空。
我该怎么做?
@W-B ty for df.melt(['id', 'technology']).assign(unit='')
id technology variable value unit
0 1 lignite co2_var 0.39960
1 2 hard_coal co2_var 0.33012
2 1 lignite co2_fix ...
3 2 hard_coal co2_fix ...
问题:
相同的 id 号,实际上这命令 df 关于变量(参数)而不是技术
IIUC
df=df.melt(['id', 'technology']).assign(unit='').sort_values(['id','technology'])
df.id=np.arange(len(df))+1