Python 统计过去一周使用熊猫进行的分组观察次数
我有一个不平衡的面板,其中一个人以不规则的间隔重复观察。我想计算一下,在过去的一周里,小组中的每个人被观察到使用熊猫的次数Python 统计过去一周使用熊猫进行的分组观察次数,python,pandas,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
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\u 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)
如果您将数据发布到一个表单中,我们可以将其复制粘贴为数据帧运行,那么您将有更多的人在玩您的数据<例如,code>df.to_dict()将生成字符串格式。为什么2000-02-01上Id b的计数为0?啊。。。。“过去一周”在哪种情况下,过去一周相对于什么时候?顺便问一下,您使用的是yyyy-dd-mm还是yyyy-mm-dd?