熊猫-从首次/最后进入开始的几周分组

时间:2018-08-12 20:04:24

标签: pandas dataframe pandas-groupby

我正在尝试为一组数据中的每个用户提取一些功能。

我需要的功能是前三周和后三周的平均值。

示例:

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()

但是,在这种情况下,所有唯一身份用户都共享星期分组,从而导致以下问题:

  1. userA从1月3日开始→第一周将从1月3日到1月9日
  2. userB从1月6日开始→他的第一周平均值将基于4天(1月5日至9日),因此无与伦比。

0 个答案:

没有答案