我有这样的数据框:
STOREID VARIANT_ARTICLE PO_DATE UNITSUM
0 st123 12345 20200427 9.0
1 st123 12345 20200428 3.0
2 st123 12345 20200429 13.0
3 st123 12345 20200430 7.0
4 st123 12345 20200501 16.0
5 st123 12345 20200502 3.0
6 st123 12345 20200503 5.0
7 st123 12345 20200504 10.0
8 st123 12345 20200505 3.0
9 st123 12345 20200506 7.0
10 st123 12345 20200507 29.0
11 st123 12345 20200508 4.0
12 st123 12345 20200509 9.0
13 st123 12345 20200510 8.0
14 st123 12345 20200511 5.0
15 st123 12345 20200513 8.0
16 st123 12345 20200514 2.0
17 st123 12345 20200515 2.0
18 st123 12345 20200516 2.0
我要计算rolling
列中的sum
avg
和UNITSUM
。
这里要注意的是,我需要计算过去4天(例如)而不是之前的4条记录,这实际上意味着,对于我的示例中的15th
行,要汇总的日期范围是{{1} }。由于没有20200510 - 20200513
的条目,因此我们对3个可用行进行汇总,并且在计算中不包括20200512
(就像20200509
在滚动功能中一样)。
有没有办法做到这一点?
编辑:我必须使用pandas
API来实现。
答案 0 :(得分:1)
dask数据框的语法与pandas API相同:
In [38]: ddf = dask.datasets.timeseries()
In [39]: ddf.head()
Out[39]:
id name x y
timestamp
2000-01-01 00:00:00 1003 George -0.287285 0.773949
2000-01-01 00:00:01 992 Oliver -0.738190 0.893916
2000-01-01 00:00:02 972 Jerry 0.080410 -0.972037
2000-01-01 00:00:03 970 George -0.402327 0.034718
2000-01-01 00:00:04 1034 Alice -0.694517 0.646178
In [40]: ddf.x.rolling(4).agg({'sum': 'sum', 'mean': 'mean'}).head()
Out[40]:
sum mean
timestamp
2000-01-01 00:00:00 NaN NaN
2000-01-01 00:00:01 NaN NaN
2000-01-01 00:00:02 NaN NaN
2000-01-01 00:00:03 -1.347393 -0.336848
2000-01-01 00:00:04 -1.754625 -0.438656