Pandas 如何计算自定义时间列的滚动和?
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
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)