我有以下形式的数据:
id rr
2.0 4
2.0 5
2.0 4
2.0 3
5.0 4
5.0 2
5.0 4
5.0 1
7.0 1
7.0 2
7.0 3
7.0 2我想为每个id计算一个特定的参数。我写了这篇文章,但这看起来并不有效,特别是因为原始数据对于每个id (436)都有8760行。
import pandas as pd
sum_rr = pd.DataFrame(columns = {'id' ,'sum_rr2', 'sum_rr3'})
for i in id_cat.unique():
test = data[data.id == i]
test['sum_rr2'] = test.rr.rolling(3 , center = False).sum() - test.rr
test['sum_rr3'] = test.rr.rolling(4 , center = False).sum() - test.rr
sum_rr = sum_rr.append(test[['sum_rr3','sum_rr4','id']] , ignore_index = True)
sum_rr = sum_rr.reset_index(drop = True)发布于 2022-10-07 14:21:56
在您的例子中,尝试使用groupby和rolling
data['sum_rr2'] = data.groupby('id')['rr'].rolling(3).sum().reset_index(level=0,drop=True)-data.rrhttps://stackoverflow.com/questions/73988571
复制相似问题