У меня есть df, который я пытаюсь денормализовать.По сути, я хочу изменить значения параметров, такие как 'inst-cap-c'
, 'cap-lo-c'
и т. Д. ... на столбцы.
Для того, чтобы сделать это, в pandas lib до сих пор было 2 метода.С обоими из них я столкнулся с некоторыми проблемами и не смог денормализовать этот df ...
df выглядит следующим образом (для простоты используется ...):
data
Site Storage Commodity parameter value
0 Mid Pump Elec inst-cap-c 0
1 Mid Pump Elec cap-lo-c 0
2 Mid Pump Elec cap-up-c 1.5e+15
3 Mid Pump Elec inst-cap-p 0
4 Mid Pump Elec cap-lo-p 0
...
52 South Pump Elec wacc 0.07
53 South Pump Elec depreciation 50
54 South Pump Elec init 1
55 South Pump Elec discharge 3.5e-06
56 South Pump Elec ep-ratio None
Когда я пытаюсьСоздайте столбцы со значениями параметров через:
data.pivot_table(values='value',
index=['Site', 'Storage', 'Commodity'],
columns='parameter')
, это просто говорит: *** pandas.core.base.DataError: No numeric types to aggregate
Я предполагаю, что это потому, что None
значение ep-ratio
, я не могу использовать NaN
сверх None
, потому что это создало другие проблемы.
Так как я могу денормализовать этот фрейм данных?
Ожидаемый результат:
data
Site Storage Commodity inst-cap-c cap-lo-c cap-up-c ... ep-ratio
0 Mid Pump Elec 0 0 1.5e+15 ... None
1 North Pump Elec 0 0 1.5e+15 ... None
2 South Pump Elec 0 0 1.5e+15 ... None
Дополнительно:
data.set_index(['Site', 'Storage','Commodity'], append=True).unstack('parameter')
*** KeyError: 'Level parameter not found'
Я также проверил это: pivot_table Нет числовых типов для агрегирования это не помогает