У меня есть следующие панды 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
, поэтому значения уровня (после technology
) df
должны быть сложены на уровне, называемом parameter
, значения их должны быть размещены под уровнем value
, и должен быть создан новый уровень unit
пустой.
Как я могу это сделать?
@ W-B ty для 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 ...
Проблемы:
Одинаковые номера идентификаторов, и фактически это упорядочивает df по отношению к переменной (параметру), а не по технологии