【发布时间】:2018-03-01 08:52:43
【问题描述】:
Pandas 中的滚动功能只能根据行数或日期/时间列计算滚动统计信息。但我想要一个离散时间列来计算滚动总和,如下所示:
key time value
A 1 10
A 2 20
A 4 30
A 7 10
B 1 15
B 2 30
B 3 15
我想先按key 分组,然后计算value 上最接近的3 个time 的滚动总和:
key time value output
A 1 10 10
A 2 20 30(10+20)
A 4 30 60(10+20+30)
A 7 10 40(30+10)
B 1 15 15
B 2 30 45
B 3 15 60
我试过了:
grouped = input.groupby("key", as_index=False)
for name, group in grouped:
group = group.sort_values("time")
time = list(group["time"])
value = list(group["value"])
#calcRollingStat is a custom function that outputs a list of corresponding results
out = calcRollingStat(time, value, mode="avg")
group["output"] = out #out is a list
但是我不知道如何将grouped 转换回DataFrame。 Pandas 告诉我grouped 中没有reset_index 属性。
我的代码是最好的方法吗?您将如何解决这个问题?
谢谢!
【问题讨论】:
标签: pandas