使用熊猫计算过去一周中按群组观察的数量

时间:2015-03-06 22:07:42

标签: python 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和日期编制索引时进行重新采样...

1 个答案:

答案 0 :(得分:0)

由于某种原因,当我尝试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)