Pandas 如何计算自定义时间列的滚动和?

Pandas 如何计算自定义时间列的滚动和?,pandas,Pandas,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 我想先按键分组,然后计算最近3次的滚动和值: 我试过这个: grouped = input.groupby("key", as_index=False) for name, grou

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
我想先按键分组,然后计算最近3次的滚动和值:

我试过这个:

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
但我不知道如何将分组转换回数据帧。Pandas告诉我分组中没有reset_index属性

我的代码是实现这一点的最佳方法吗?你将如何解决这个问题

谢谢大家!

我相信您可以使用自定义功能:

def f(group):
    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
    group["output"] = calcRollingStat(time, value, mode="avg") 
    return group


df = input.groupby("key", as_index=False).apply(f)

非常感谢。我也尝试过使用apply,但我没有意识到我必须在函数中返回组…很高兴能帮上忙!天气真好!
def f(group):
    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
    group["output"] = calcRollingStat(time, value, mode="avg") 
    return group


df = input.groupby("key", as_index=False).apply(f)