我有一个数据帧,看起来像这样:大熊猫据帧插值/重采样每日数据
userid date count
a 2016-12-01 4
a 2016-12-03 5
a 2016-12-05 1
b 2016-11-17 14
b 2016-11-18 15
b 2016-11-23 4
的第一列是用户ID,第二列是一个日期(导致从一个groupby(pd.TimeGrouper('d')),第三列是每日计数。但是,每个用户,我想确保在用户的最小和最大日期之间缺少的任何日期填充为0所以如果我从上面的数据框开始,我会得到这样一个数据框:
userid date count
a 2016-12-01 4
a 2016-12-02 0
a 2016-12-03 5
a 2016-12-04 0
a 2016-12-05 1
b 2016-11-17 14
b 2016-11-18 15
b 2016-11-19 0
b 2016-11-20 0
b 2016-11-21 0
b 2016-11-22 0
b 2016-11-23 4
我知道有多种方法可以用熊猫数据帧进行重新采样(带有选择插入向前,向后或平均的选项),但是如何在上述意义上做到这一点,我需要连续时间序列每个用户标识,但时间序列的日期在每个用户中是不同的?
这里就是我试过,没有奏效:
grouped_users = user_daily_counts.groupby('user').set_index('timestamp').resample('d', fill_method = None)
然而,这会引发错误AttributeError: Cannot access callable attribute 'set_index' of 'DataFrameGroupBy' objects, try using the 'apply' method
。我不知道如何在提出所有列的同时使用apply
方法,因为我愿意这样做。
感谢您的任何建议!
谢谢!我没有考虑重新排序set_index,事实上,它总是让我感到困惑,因为有重复的日期,但将它们设置为索引仍然有效? – helloB
是的,但每组必须是唯一的。感谢接受。 – jezrael