【发布时间】:2015-11-25 10:45:36
【问题描述】:
有两个数据框。首先是这样的:
print df1
id date month is_buy
0 17 2015-01-16 2015-01 1
1 17 2015-01-26 2015-01 1
2 17 2015-01-27 2015-01 1
3 17 2015-02-11 2015-02 1
4 17 2015-03-14 2015-03 1
5 18 2015-01-28 2015-01 1
6 18 2015-02-12 2015-02 1
7 18 2015-02-25 2015-02 1
8 18 2015-03-04 2015-03 1
在第二个数据框中,有一些从第一个数据框中按月汇总的数据:
df2 = df1[df1['is_buy'] == 1].groupby(['id', 'month']).agg({'is_buy': np.sum})
print df2
id month buys
0 17 2015-01 3
1 17 2015-02 1
2 17 2015-03 1
3 18 2015-01 1
4 18 2015-02 2
5 18 2015-03 1
我正在尝试获取名为“last_week_buys”的新 df2 列,其中包含从每个 df1['month'] 的第一天起的最后 7 天的汇总购买。换句话说,我想得到这个:
id month buys last_week_buys
0 17 2015-01 3 NaN
1 17 2015-02 1 2
2 17 2015-03 1 0
3 18 2015-01 1 NaN
4 18 2015-02 2 1
5 18 2015-03 1 1
有什么想法可以得到这个专栏吗?
【问题讨论】:
-
取决于您如何定义上个月的最后一周(最后 7 天?、最后 5 个交易日等),应该很容易计算每月的购买数量上周,然后将这个系列转移到下个月。
-
@KevinS,是的,需要计算最后 7 天的购买量。我尝试将 df1 中的数据不仅按月分组,而且按一年中的一周分组,但注意到,这个日历周可以包括 1 或 2 天……但我肯定需要 7 天。
标签: python pandas python-datetime