Есть два Dataframes. Во-первых, как это:pandas count значения за последние 7 дней с даты
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
Я пытаюсь получить новый столбец df2 под названием «last_week_buys» с агрегированной покупает последние 7 дней с первого дня каждого df1 ['month']. Другими словами, я хочу получить следующее:
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 дней. –