Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用堆叠级别值对数据进行规格化_Python_Pandas_Stack_Normalize - Fatal编程技术网

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