我有一个不平衡的面板,不定期地反复观察个体。我想计算过去一周使用大熊猫观察小组中每个人的次数。
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和日期编制索引时进行重新采样...
答案 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)