У меня есть следующий фрейм данных:
df
eff inv-cost fix-cost var-cost inst-cap cap-lo cap-up wacc depreciation annuity-factor
Site In Site Out Transmission Commodity
Mid North hvac Elec 0.9 1650000.0 0.0 0.0 0.0 0.0 1.500000e+15 0.07 40.0 0.075009
South hvac Elec 0.9 1650000.0 0.0 0.0 0.0 0.0 1.500000e+15 0.07 40.0 0.075009
North Mid hvac Elec 0.9 1650000.0 0.0 0.0 0.0 0.0 1.500000e+15 0.07 40.0 0.075009
South hvac Elec 0.9 1650000.0 0.0 0.0 0.0 0.0 1.500000e+15 0.07 40.0 0.075009
South Mid hvac Elec 0.9 1650000.0 0.0 0.0 0.0 0.0 1.500000e+15 0.07 40.0 0.075009
North hvac Elec 0.9 1650000.0 0.0 0.0 0.0 0.0 1.500000e+15 0.07 40.0 0.075009
Я хотел бы получить значения в Site In
и Site Out
в виде списка, состоящего из кортежей. Ниже приведен пример списка, который я хотел бы иметь:
list = [('Mid','North'),
('South', 'Mid'),
('South', 'North')]
Ключевым моментом здесь является получение значений из Site In
и Site Out
с помощью функции панд, насколько это возможно, а также, поскольку передача от 'Mid'
до 'South'
равна передаче от 'South'
к 'Mid'
, некоторые из созданных элементов списка должны быть отфильтрованы.
Следовало бы, что я думал до сих пор, но, может быть, вы могли бы найти лучший способ?
1) получить значения Site In
и Site Out
и создать список, список, вероятно, будет выглядеть так:
list = [('Mid','North'), ('Mid','South'),
('North', 'Mid'), ('North', 'South'),
('South', 'Mid'), ('South', 'North')]
2) поскольку половина элементов равна и не обязательна, например; ('Mid','North')
& ('North', 'Mid')
, один из них может быть удален.
3) В конце я хотел бы иметь одно из следующего (порядок не имеет значения):
list = [('Mid','North'), ('Mid','South'), ('North', 'South')]
list = [('North','Mid'), ('Mid','South'), ('North', 'South')]
list = [('South','Mid'), ('Mid','North'), ('North', 'South')]
etc...
Источник для df
Лист передачи
https://github.com/rl-institut/urbs-oemof/blob/dev/mimo.xlsx
PS:
Я не знаю, какую функцию панд использовать для получения 1-го предмета, а также не знаю, как выталкивать элементы, упомянутые во 2-м предмете. И если у вас также есть лучший алгоритм для этого, я бы с удовольствием использовал его. TY