我有一个数据框,看起来像这样(日期格式为:dd/mm/yyyy
):
Param1 Param2 date value
1 a b 30/10/2007 5
2 a b 31/10/2007 8
3 a b 01/11/2007 9
4 a b 01/12/2007 3
5 a b 02/12/2007 2
6 a b 01/03/2008 11
7 b c 05/10/2008 7
8 b c 06/10/2008 13
9 b c 07/10/2008 19
10 b c 08/11/2008 22
11 b c 09/11/2008 35
12 b c 08/12/2008 5
我需要做的是按
Param1
和Param2
进行分组,并创建N(在我的情况下为3)个附加列,用于显示距离当前行至少30天的前3个最近值。因此,输出应该看起来像这样: Param1 Param2 date value prev_1 prev_2 prev_3
1 a b 30/10/2007 5 None None None
2 a b 31/10/2007 8 None None None
3 a b 01/11/2007 9 None None None
4 a b 01/12/2007 3 9 8 5
5 a b 02/12/2007 2 9 8 5
6 a b 01/03/2008 11 2 3 9
7 b c 05/10/2008 7 None None None
8 b c 06/10/2008 13 None None None
9 b c 07/10/2008 19 None None None
10 b c 08/11/2008 22 19 13 7
11 b c 09/11/2008 35 19 13 7
12 b c 08/12/2008 5 22 19 13
我尝试使用
set_index
,stack
和相关函数,但我无法弄清楚(没有丑陋的for
)。任何帮助将不胜感激!编辑:虽然它与此问题相似:question,但它并不完全相同,因为您不能简单地进行shift
,因为您需要检查至少30天的间隔条件。