У меня есть следующие панды df:
df
price max maxperhour
Site Commodity Type
Mid Biomass Stock 6.0 1.500000e+15 1.500000e+15
CO2 Env 0.0 1.500000e+15 1.500000e+15
Coal Stock 7.0 1.500000e+15 1.500000e+15
Elec Demand NaN NaN NaN
Gas Stock 27.0 1.500000e+15 1.500000e+15
Hydro SupIm NaN NaN NaN
Lignite Stock 4.0 1.500000e+15 1.500000e+15
Solar SupIm NaN NaN NaN
Wind SupIm NaN NaN NaN
Я бы хотел отфильтровать вышеупомянутый df и создать список из Commodity
элементов в виде списка, когда Site == 'Mid'
и Type == ('Stock' or 'Demand')
.
поэтому следующий список должен быть создан с некоторой функцией фильтрации панд:
df.somefunction()
['Biomass', 'Coal', 'Gas', 'Lignite', 'Elec']
Как бы мне этого добиться?
Наконец, если это возможно, я бы хотел, чтобы последним элементом был 'Elec'
, что я имею в виду; когда список создан, 'Elec'
будет, вероятно, третьим элементом списка, например:
['Biomass', 'Coal', 'Elec', 'Gas', 'Lignite']
Однако было бы лучше, если бы я мог получить 'Elec'
в качестве последнего элемента, например:
['Biomass', 'Coal', 'Gas', 'Lignite', 'Elec']
, так как это единственный элемент с Type == 'Demand'
От @ Jezrael
df[(df.index.get_level_values('Site') == 'Mid') & (df.index.get_level_values('Type') == 'Stock')].index.remove_unused_levels().get_level_values('Commodity').tolist()