Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过ID列有效地对数据帧分组中的多行进行上一年的求和_Python_Python 3.x_Pandas - Fatal编程技术网

Python 如何通过ID列有效地对数据帧分组中的多行进行上一年的求和

Python 如何通过ID列有效地对数据帧分组中的多行进行上一年的求和,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个数据框,它是一系列包含个人标识符、约会日期和数值的行 对于每一行,我需要该个人过去一年的数值总和。我实际上想做: df.groupby('ID')['numerical value'].cumsum() 但是我希望cumsum只包括日期在过去一年内的行 我目前正在使用下面的apply函数,但是当我有一个长数据帧时,它的速度非常慢 def sum_hist(应用日期、人名、关键字): 搜索限制=应用日期+pd.Timedelta(“-365天”) temp_df=df[(df[“身份证号

我有一个数据框,它是一系列包含个人标识符、约会日期和数值的行

对于每一行,我需要该个人过去一年的数值总和。我实际上想做:

df.groupby('ID')['numerical value'].cumsum()
但是我希望
cumsum
只包括日期在过去一年内的行

我目前正在使用下面的apply函数,但是当我有一个长数据帧时,它的速度非常慢

def sum_hist(应用日期、人名、关键字):
搜索限制=应用日期+pd.Timedelta(“-365天”)
temp_df=df[(df[“身份证号码”]==personID)

&(df[“约会日期”]>搜索限制)和(df[“约会日期”]事实证明,这可以通过熊猫滚动功能实现:

df.groupby('ID number')。滚动(window='365d',min_periods=1,on=“约会日期”)['numerical value'].sum()
它极大地提高了速度,使我的问题能够在不到一分钟的时间内运行,而不是以前的几个小时


谢谢@ s-sf链接到

检查“谢谢”@ sf sf,或多或少为我解决这个问题。我将尽快把我的问题编辑回数据文件中。请考虑创建答案(而不是把答案放在问题中)。。通过这种方式,访问者可以在stackoverflow的列表概述中看到答案。@ilmiacs就可以了!