Как найти продажи за предыдущие n месяцев, используя groupby - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть данные о ежедневных продажах:

import pandas as pd

date = ['28-01-2017','29-01-2017','30-01-2017','31-01-2017','01-02-2017','02-02-2017']
sales = [1,2,3,4,1,2]
ym = [201701,201701,201701,201701,201702,201702]
prev_1_ym = [201612,201612,201612,201612,201701,201701]
prev_2_ym = [201611,201611,201611,201611,201612,201612]

df_test = pd.DataFrame({'date': date,'ym':ym,'prev_1_ym':prev_1_ym,'prev_2_ym':prev_2_ym,'sales':sales})

df_test['date'] = pd.to_datetime(df_test['date'],format = '%d-%m-%Y')

Я пытаюсь найти общий объем продаж за предыдущий 1м, за предыдущий 2м и т. Д. c ..

Мой текущий подход использовать понимание списка:

df_test[prev_1m_sales] = [ sum(df_test.loc[df_test['ym'] == x].sales) for x in df_test[prev_1_ym] ]

Однако это оказывается очень медленным.

Есть ли способ ускорить его с помощью .groupby ()?

1 Ответ

0 голосов
/ 09 февраля 2020

вы можете использовать столбец даты для группировки ваших данных, сначала измените его тип данных на pandas TimeStamps,

df['dates']=pd.to_datetime(df['dates'])

, затем вы можете использовать его непосредственно в группировке, например

df.groupby(df.data.month).sales.sum().cumsum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...