使用 pandas 计算过去一周按组的观察次数

Count number of observations by group in past week using pandas

我有一个不平衡的面板,其中以不规则的间隔反复观察一个人。我想使用 pandas.

计算过去一周观察小组中每个人的次数
Id     Date
 a   2000-01-01
 a   2000-01-02
 a   2000-01-05
 b   2000-01-01
 b   2000-02-01

变成

Id     Date       Count
 a   2000-01-01     0
 a   2000-01-02     1
 a   2000-01-05     2
 b   2000-01-01     0
 b   2000-02-01     0

重采样方法似乎不起作用,因为当按 Id 和日期索引时我无法重采样...

出于某种原因,当我尝试 pd.rolling_count 时它不起作用,所以我将其放在一起。不确定它是否最有效,但它确实有效。

def count_obs(df, interval=7):
    idx = df['Date']
    df['temp'] = 1
    by_day = df.set_index('Date').resample('D').fillna(0)
    csum = by_day['temp'].cumsum()
    by_day['Count'] = csum - csum.shift(interval).fillna(0)
    return by_day.ix[by_day.index.isin(idx), 'Count']

df.groupby('Id').apply(count_obs)