【发布时间】:2017-08-24 23:53:38
【问题描述】:
我现在正在将我的一个 Spark 项目迁移到 Pandas,我遇到的一个问题是在每个组内的 pandas 中实现一个类似滚动求和的函数。
假设我有:
key time value
A 1 10
A 2 20
A 4 30
A 8 10
B 1 15
B 2 30
B 3 15
我想首先按key 分组,然后计算一个类似滚动和的函数,该函数填充value 上相对于time 的中间时隙。例如,如果窗口大小为 2,我想要的输出将是:
key time output
A 1 10
A 2 30 (10+20)
A 3 30 (10+20+0)
A 4 50 (20+0+30)
A 5 30 (0+30+0)
A 6 30 (the same as above)
A 8 10 (7 is 0 so it is omitted)
A 9 10
A 10 10
B 1 15
B 2 45
B 3 60
B 4 45
B 5 15
我在group by 和apply 上挣扎了整整一个下午。有没有聪明的方法来做到这一点?在 spark 中,我可以 collect_list 然后 select 一个 udf 到 time 和 value 来执行此操作,但 pandas 的想法似乎与 Spark 不同。
谢谢!
【问题讨论】:
-
您似乎在“创建”数据。目前尚不清楚 A 的输出时间如何从 1 到 5,而 B 的时间只有 1 到 4。
-
@COLDSPEED 不清楚,记录的最后一个值持续1个时间槽,因为窗口大小为1。
-
您的结果是窗口大小为 2 还是 3?
标签: pandas