У меня есть фрейм данных (мой реальный содержит 50 000 строк и 34 столбцов):
df = pd.DataFrame({
'NAME': ['APPLE COMPANY A', 'BANANA COMPANY B', 'ORANGE COMPANY C', 'APPLE COMPANY A'],
'INVESTMENTS': ['OIL LTD', 'GOLD LTD', 'GAS LTD', 'GAS LTD'],
'STOCKS' : [100, 200, 300, 400],
'OIL LTD': [0, 0, 0, 0],
'GOLD LTD': [0, 0, 0, 0],
'GAS LTD': [0, 0, 0, 0],
})
NAME INVESTMENTS STOCKS OIL LTD GOLD LTD GAS LTD
0 APPLE COMPANY A OIL LTD 100 0 0 0
1 BANANA COMPANY B GOLD LTD 200 0 0 0
2 ORANGE COMPANY C GAS LTD 300 0 0 0
3 APPLE COMPANY A GAS LTD 400 0 0 0
Как мне найти значения из столбца STOCKS
на основе значений из NAME
и имен столбцов?Например, для первого значения в столбце OIL LTD
он ищет APPLE COMPANY A
в столбце NAME
и OIL LTD
(на основе столбца с тем же именем) в столбце INVESTMENTS
, что дает значение 100
иможно увидеть ниже.Таким образом, искомое значение берется из имени столбца OIL LTD
, GOLD LTD
, GAS LTD
и т. Д. На основе значений из NAME
и INVESTMENTS
.
Я хочу, чтобы вывод выглядел какthis:
NAME INVESTMENTS STOCKS OIL LTD GOLD LTD GAS LTD
0 APPLE COMPANY A OIL LTD 100 100 0 400
1 BANANA COMPANY B GOLD LTD 200 0 200 0
2 ORANGE COMPANY C GAS LTD 300 0 0 300
3 APPLE COMPANY A GAS LTD 400 0 0 400
Я бы обычно использовал pd.merge()
, если хочу найти одно значение, но не уверен, работает ли оно с двумя значениями.Он работает с Excel, но для каждого столбца требуется 15 минут, что неэффективно.