【发布时间】:2021-03-13 15:24:22
【问题描述】:
采用以下多索引数据框:
index_1 index_2 cum_value
0 2020-01 100.00
0 2020-02 50.00
0 2020-03 -50.00
0 2020-04 150.00
0 2020-05 200.00
1 2020-01 25.00
1 2020-02 50.00
1 2020-03 -100.00
1 2020-04 50.00
1 2020-05 200.00
我需要创建一个new_col 来计算每个index_1 的最后一个cum_value 的差异,如果这个cum_value 在那个月增加了,考虑到过去几个月在那个index_1 中的过去最大值.
结果应该是这样的:
index_1 index_2 cum_value new_col
0 2020-01 100.00 100.00 --> first positive value on index_1 [0]
0 2020-02 50.00 0.00
0 2020-03 -50.00 0.00
0 2020-04 150.00 50.00 --> (150 - 100)
0 2020-05 200.00 50.00 --> (200 - 150)
1 2020-01 25.00 25.00 --> first positive value on index_1 [1]
1 2020-02 50.00 25.00 --> (50 - 25)
1 2020-03 -100.00 0.00
1 2020-04 50.00 0.00
1 2020-05 200.00 150.00 --> (200 - 50)
new_col 上具有正值的第一行必须显示该值。我不需要负最大值。
这是计算边际价值以支付一些税款的基本原理。
【问题讨论】:
-
cum_value列中的正值是否总是按升序排列? -
@Shubham Sharma 没有。它们可以是正面的,但低于之前的正面值。
-
那么考虑一下
cum_value对应的索引0 2020-04列中的值是否是50而不是150,那么这种情况下会输出什么? -
@Shubham Sharma 为零,因为 50 不大于前一个最大值,即 100。即。这不是新的最大值。我只想减去最后 2 个最大值来查看残值。