我有一个名称和令牌表,其中每个名称与一个唯一的令牌相关联,每个令牌有两个总成本。给出了代币的使用日期
Token Name AggCost1 AggCost2 Date
0 token1 nameX 26 70 2019-01-01
1 token2 nameY 100 120 2018-11-11
从第一个表中的日期开始,我要在特定令牌使用前3个月(日期表示为-3mo)和使用后3个月(日期表示为+3mo)的时间间隔内,为出现在第一个表中的每个名称聚合下表中的第二个表中的Cost1和Cost2。在这个表中,名称和令牌之间的关系是一对多的
Name Date Token Cost1 Cost2
0 nameX 2018-10-03 tokenA 0 30
1 nameX 2018-12-12 tokenB 40 20
2 nameX 2019-01-01 token1 26 70
3 nameY 2018-09-01 tokenC 150 200
4 nameY 2018-07-04 tokenD 10 20
5 nameY 2019-01-01 NaN 50 50
6 nameY 2018-11-11 token2 50 20
7 nameY 2018-11-11 token2 50 100
下面是我想要输出的内容:
Token Name AggCost1 AggCost2 Date -3mo -3moCost1 -3moCost2 +3mo +3moCost1 +3moCost2
0 token1 nameX 26 70 2019-01-01 2018-10-01 40 50 2019-04-01 0 0
1 token2 nameY 100 120 2018-11-11 2018-08-11 150 200 2019-02-11 50 50
我很难生成这个中间表。我不知道如何根据第一个表中的Date
将每个名称的行收集到-/+3个月的存储桶中
Name Date -3mo -3moCost1 -3moCost2 +3mo +3moCost1 +3moCost2
0 nameX 2019-01-01 2018-10-01 40 50 2019-03-31 0 0
1 nameY 2018-11-11 2018-08-11 150 200 2019-02-11 50 50
好吧,我可以拼凑一些东西。我已经分解了我在下面走的步骤
我的起始数据帧:
df1
df2
使用
DateOffset
获取Date1前后三个月的日期合并
df1
和df2
保留日期2在日期1之前3个月或之后3个月的持续时间内的行
创建一个列,将行分割为-3mo或+3mo存储桶
使用新列获取Cost1和Cost2的聚合
将3mo\u Cost1和3mo\u Cost2分为两列
经过一些清洁后,这是最终输出:
相关问题 更多 >
编程相关推荐