нормализация панд df со значениями уровня суммирования вместе - PullRequest
0 голосов
/ 16 января 2019

У меня есть следующие панды 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 по отношению к переменной (параметру), а не по технологии

1 Ответ

0 голосов
/ 16 января 2019

IIUC

df=df.melt(['id', 'technology']).assign(unit='').sort_values(['id','technology'])
df.id=np.arange(len(df))+1
...