已经在python中使用for循环和列表部分解决了数据任务,但是审阅者不满意。你能帮助利用panda方法吗?在文档和论坛中找不到太多。基本上,如果每个商店的period_id[q]-period_id[q-1]!=1,则周期数增加1。我对任务的看法:
for i in range(len(period_id)-1):
if (period_id[i+1] - period_id[i])!=1:
promo_count=0
total_period_count+=1
Number_of_promo_periods.append(total_period_count)
Duration.append(promo_count)
else:
promo_count+=1
Number_of_promo_periods.append('')
Duration.append(promo_count)
data['Number_of_promo_periods']=Number_of_promo_periods
data['Duration']=Duration
store_id period_id sales_volume Number_of_promo_periods Duration period_total_sale
724224 4168621 191 2.25 1 0
216520 4168621 192 6.35 1
175105 4168621 193 7.05 2
699084 4168621 194 2.50 3
780957 4168621 195 1.70 4
403579 4168621 196 4.75 5
385893 4168621 197 4.90 6
415417 4168621 198 4.70 7
106273 4168621 199 10.00 8
493167 4168621 200 4.10 9
683860 4168621 201 2.60 10
73777 4168621 202 14.80 11
599425 4168621 203 3.30 12
137835 4168621 204 8.15 13
296985 4168621 205 5.50 14
548164 4168621 206 3.70 15 86.35
296984 4168621 208 5.50 2 0
453535 4168621 209 4.40 1 9.9
336839 4168621 211 5.25 3 0
630290 4168621 212 3.05 1
385922 4168621 213 4.90 2
679706 4168621 214 2.65 3 15.85
给定
store_id period_id sales_volume
724224 4168621 191 2.25
216520 4168621 192 6.35
175105 4168621 193 7.05
699084 4168621 194 2.50
780957 4168621 195 1.70
403579 4168621 196 4.75
385893 4168621 197 4.90
415417 4168621 198 4.70
106273 4168621 199 10.00
493167 4168621 200 4.10
683860 4168621 201 2.60
73777 4168621 202 14.80
599425 4168621 203 3.30
137835 4168621 204 8.15
296985 4168621 205 5.50
548164 4168621 206 3.70
296984 4168621 208 5.50
453535 4168621 209 4.40
336839 4168621 211 5.25
630290 4168621 212 3.05
385922 4168621 213 4.90
679706 4168621 214 2.65
1条答案
按热度按时间5jdjgkvh1#
对于Pandas,您可以使用
diff
找到句点,并使用groupby
按period
进行聚合输出: