我正在尝试为一组数据中的每个用户提取一些功能。
我需要的功能是前三周和后三周的平均值。
示例:
userid date secondsPlayed movesUsed
++/acsbP2NFC2BvgG1BzySv5jko= 2016-04-28 413.88188 85
++/acsbP2NFC2BvgG1BzySv5jko= 2016-05-01 82.67343 15
++/acsbP2NFC2BvgG1BzySv5jko= 2016-05-05 236.73809 39
++/acsbP2NFC2BvgG1BzySv5jko= 2016-05-10 112.69112 29
-------------------------- cont ---------------------------
++3mraoYbTBQOHFiEx1t7ZKuCmQ= 2016-05-11 211.42790 44
++3mraoYbTBQOHFiEx1t7ZKuCmQ= 2016-05-25 83.24814 18
++3mraoYbTBQOHFiEx1t7ZKuCmQ= 2016-05-27 62.29041 12
-------------------------- cont ---------------------------
++3mraoYbTBQOHFiEx1t7ZKuCmQ= 2016-07-04 75.03039 19
++3mraoYbTBQOHFiEx1t7ZKuCmQ= 2016-07-05 574.84632 102
++3mraoYbTBQOHFiEx1t7ZKuCmQ= 2016-07-06 148.70275 1
将给出以下结果
userid seconds_first seconds_second seconds_third seconds_3rd last seconds_2nd_last seconds_last
++/acsbP2NFC2BvgG1BzySv5jko= 413.88188 349.42921 NaN NaN 413.88188 349.42921
-------------------------- cont ---------------------------
++3mraoYbTBQOHFiEx1t7ZKuCmQ= 211.42790 145.53855 .... .... ...... 798.57946
尝试失败:
我试图将数据框缩小到一个点,在这里我可以简单地按用户ID分组并按nth和last聚合。
但是我最接近的是这个
df.groupby(['userid', pd.Grouper(freq='7D', key='date')])['secondsPlayed' ]\ .agg('sum').reset_index()
但是,在这种情况下,所有唯一身份用户都共享星期分组,从而导致以下问题: