【发布时间】:2018-05-31 09:59:58
【问题描述】:
我有一个数据集 (Product_ID,date_time, Sold),其中包含在不同日期销售的产品。日期为 9 个月,从一个月开始随机 13 天或更长时间。我必须以这样一种方式分离数据,即每种产品每天售出多少产品 1-3 天,每天售出 4-7 天,每天售出 8-15 天,每天售出超过 16 天。那么如何使用 pandas 和其他包在 python 中编写代码
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()
这给了我每个月这几天之间销售的产品数量。但是如果产品以指定的连续销售量,我需要指定范围内的产品总和。
【问题讨论】:
-
我的解决方案效果如何?
标签: python pandas numpy dataframe pivot-table