【发布时间】:2016-12-06 23:10:40
【问题描述】:
我有一个如下所示的数据框:
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
我知道 Pandas 数据帧有多种方法可以重新采样(可以选择向前、向后或通过平均进行插值),但是在上述意义上,我将如何做到这一点,我想要一个连续的时间每个用户 ID 的系列,但每个用户的时间系列日期不同?
这是我尝试过但没有奏效的方法:
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 方法,同时按照我的意愿提出所有列。
感谢您的任何建议!
【问题讨论】:
标签: python pandas time-series