【发布时间】:2021-05-19 12:42:31
【问题描述】:
创建数据框的代码。
import pandas as pd
z = pd.DataFrame({'VENDOR':['A','A','A','A','B','B'],
'PO_DATE':['2020-12-16','2020-12-02','2020-11-23','2020-11-09','2020-12-16','2020-11-02'],
'PO_QTY':[18,5,77,6,20,5]})
z['PO_DATE'] = pd.to_datetime(z['PO_DATE'])
z = z.sort_values(['VENDOR','PO_DATE']).reset_index(drop=True)
z1 = z.groupby(['VENDOR']).agg({'PO_DATE':'last'}).rename(columns = {'PO_DATE':'MAX_PO_DATE'})
z2 = pd.merge(z,z1, on = 'VENDOR')
z2['DURATION'] = (z2['MAX_PO_DATE'] - z2['PO_DATE']).dt.days
Dataframe 如下所示。
此数据框按 VENDOR 和 PO_DATE 级别分组。
我已经创建了 MAX_PO_DATE 和 DURATION(通过取 MAX_PO_DATE 和 PO_DATE 的差异)。
我需要找到每条记录最近 30 天和最近 60 天的 PO_QTY 平均值。
例如:
在第一条记录中,第一条和第四条记录的日期差是 37,但对于第一条和第三条记录,是 23,小于 30 天,所以 AVG_PO_QTY_30_DAYS 是前 3 条记录的 PO_QTY 的平均值同一供应商,即 (6+77+5)/3。
对于 60 天,它将是 (6+77+5+18)/4,因为从第 1 条记录到第 4 条记录的日期差小于 60 天。
【问题讨论】:
标签: pandas dataframe pandas-groupby aggregate average