Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 统计过去一周使用熊猫进行的分组观察次数_Python_Pandas - Fatal编程技术网

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?