У меня есть набор данных (Product_ID, date_time, Sold), в котором продукты продаются на разные даты.Даты даются на 9 месяцев со случайными 13 или более днями из месяца.Я должен разделить данные таким образом, чтобы для каждого продукта, сколько продуктов продавалось ежедневно в течение 1-3 дней, продавалось ежедневно в течение 4-7 дней, продавалось ежедневно в течение 8-15 дней и продавалось ежедневно в течение> 16 дней.Так как я могу кодировать это на python, используя pandas и другие пакеты
PRODUCT_ID DATE_LOCATION Sold
0E4234 01-08-16 0:00 2
0E4234 02-08-16 0:00 7
0E4234 07-08-16 0:00 3
0E4234 08-08-16 0:00 1
0E4234 09-08-16 0:00 2
0E4234 10-08-16 0.00 1
.
.
.
0G2342 22-08-16 0:00 1
0G2342 23-08-16 0:00 2
0G2342 26-08-16 0:00 1
0G2342 28-08-16 0:00 1
0G2342 29-08-16 0:00 3
0G2342 30-08-16 0:00 3
.
.
.(goes for 64 products each with 9 months of data)
.
Я даже не знаю, как кодировать это на python. Выходные данные:
PRODUCT_ID Days Sold
0E4234 1-3 9 #(1,2) dates because range is 1 to 3
4-7 7 #(7,8,9,10) dates because range is 4 to 7
8-15 0
>16 0
0G2342 1-3 11 #(22,23),(26),(28,29,30) dates because range is 1 to 3
4-7 0
8-15 0
>16 0
.
.(for 64 products)
.
Было бырад, если хоть кто-то разместил ссылку, с чего начать.Я попробовал
df["DATE_LOCATION"] = pd.to_datetime(df.DATE_LOCATION)
df["DAY"] = df.DATE_LOCATION.dt.day
def flag(x):
if 1<=x<=3:
return '1-3'
elif 4<=x<=7:
return '4-7'
elif 8<=x<=15:
return '8-15'
else:
return '>=16'
df["Days"] = df.DAY.apply(flag)
df.groupby(["PRODUCT_ID","Days"]).Sold.sum()
Это дало мне количество продуктов, проданных между этими днями в каждом месяце. Но мне нужна сумма продуктов для указанного диапазона, в котором продукты были проданы в указанной серии.