【发布时间】:2020-05-18 05:05:37
【问题描述】:
我为某些交易策略创建了这个嵌套字典,比如:
{'Strategy1' :{'AAPL':'Strategy1_APPLE', 'MSFT':'Strategy1_MICROSOFT'}, 'Strategy2' :{'AAPL': 'Strategy2_APPLE', 'MSFT':'Strategy2_MICROSOFT'}}
我已经构建了一个数据框,其中包含属于策略 1 或策略 2 的交易列表,并且已经创建了一个包含该信息的列。然后我要做的是基于顶级键(即策略1或策略2)和嵌套键(即AAPL或MSFT)将dict中的值映射到新列。这样每笔交易都伴随着正确的策略和代码在数据框的同一行中。
因此,具有 Strategy1 和 AAPL 的数据框中的一行在新列中获得了 Strategy1_APPLE 的值,但 Strategy2 和 AAPL 获得了 Strategy2_APPLE。
我一直在玩 map() 和一堆 lambda 函数,但我无法让它工作。我认为这是可能的,而不需要做一堆丑陋的循环和 if 语句,我真的可以在这里使用一些帮助来做到这一点。
编辑:示例
所以它目前看起来像这样
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
请注意,连接字符串或类似的东西不适用于我的实际问题,因为 substgy 名称要复杂得多
【问题讨论】:
-
我们需要一个字典使用的所有东西的例子,数据框和预期的输出
-
也许你完全需要
DataFrame.replace... 或pd.DataFrame+lookup -
鉴于新列中的值需要同时基于代码和策略列,我看不出这将如何工作。我看不到查找或替换如何基于多个值来做到这一点
标签: python pandas dictionary