Я создал этот вложенный словарь для определенных торговых стратегий, скажем:
{'Strategy1' :{'AAPL':'Strategy1_APPLE', 'MSFT':'Strategy1_MICROSOFT'}, 'Strategy2' :{'AAPL': 'Strategy2_APPLE', 'MSFT':'Strategy2_MICROSOFT'}}
Я уже построил фрейм данных со списком сделок, которые принадлежат либо стратегии1, либо стратегии2, и создал столбец с этой информацией. , То, что я тогда пытаюсь сделать, это сопоставить значения в dict с новым столбцом, основанным как на ключе верхнего уровня (т.е. стратегии1 или стратегии2), так и на вложенном ключе (то есть AAPL или MSFT). Так что каждая отдельная сделка сопровождается правильной стратегией и тикером в одной и той же строке фрейма данных.
Таким образом, строка в фрейме данных со Strategy1 и AAPL получает значение Strategy1_APPLE в новом столбце, но Strategy2 и AAPL получает Strategy2_APPLE.
Я играл с map () и кучей лямбда-функций, но не могу заставить это работать. Я думаю, что это возможно, не делая кучу уродливых циклов, и если операторы и я действительно могли бы использовать некоторую помощь о том, как сделать это здесь.
edit: пример
Так что в настоящее время это выглядит так
ticker Strategies
1 AAPL Strategy1
2 MSFT Strategy1
3 MSFT Strategy2
4 AAPL Strategy1
5 MSFT Strategy2
и желаемый результат таков:
ticker Strategies substrategy
1 AAPL Strategy1 Strategy1_APPLE
2 MSFT Strategy1 Strategy1_MICROSOFT
3 MSFT Strategy2 Strategy2_MICROSOFT
4 AAPL Strategy1 Strategy1_APPLE
5 MSFT Strategy2 Strategy2_MICROSOFT
Обратите внимание, что объединение строк или что-то в этом роде не работает для моей реальной проблемы, когда имена субстратности намного сложнее