Python 使用堆叠级别值对数据进行规格化
我有以下内容,我想将其正常化:Python 使用堆叠级别值对数据进行规格化,python,pandas,stack,normalize,Python,Pandas,Stack,Normalize,我有以下内容,我想将其正常化: 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
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
下,新的级别单元
应该是空的
我该怎么做?
@用于df.melt(['id','technology'])的W-B类型。分配(单位='')
问题:
相同的id号,实际上这是根据变量(参数)而不是技术来订购df
df=df.melt(['id', 'technology']).assign(unit='').sort_values(['id','technology'])
df.id=np.arange(len(df))+1
df.melt(['id','technology'])
wow它几乎可以做我想要的一切。最后一件事是添加一个空的unit
,id应该被重置,并从1设置为len(df.rows)df.melt(['id','technology'])。分配(unit='')@W-B ty和更新的问题让我添加它作为答案。1个问题如果我想将id
从1重置为len(df.rows),我该怎么做?
df=df.melt(['id', 'technology']).assign(unit='').sort_values(['id','technology'])
df.id=np.arange(len(df))+1