In[1]df = pd.DataFrame({'product': List('aaaabbbbcccc'),'week': [1,2,3,5,1,4],'sales': np.power(2,range(12))})Out[1] product sales week0 a 1 11 a 2 22 a 4 33 a 8 54 b 16 15 b 32 26 b 64 37 b 128 58 c 256 19 c 512 210 c 1024 311 c 2048 4
我想创建一个新列,其中包含前n周的累计销售额,按产品分组.例如.对于n = 2,它应该像last_2_weeks:
product sales week last_2_weeks0 a 1 1 01 a 2 2 12 a 4 3 33 a 8 5 44 b 16 1 05 b 32 2 166 b 64 3 487 b 128 5 648 c 256 1 09 c 512 2 25610 c 1024 3 76811 c 2048 4 1536
如果每周都有记录,我可以使用此question中描述的rolling_sum.
有没有办法将’week’设置为索引,只计算该索引的总和?或者我可以重新采样’周’并将所有缺失行的销售额设置为零?
解决方法 重新采样仅对DatetimeIndex,timedeltaIndex或Periodindex有效.但是整数可以使用reindex.
首先将列周设置为索引.然后,df按列产品分组,并按每组索引的最大值应用reindex.缺少的值由0填充.
import pandas as pdimport numpy as npdf = pd.DataFrame({'product': List('aaaabbbbcccc'),range(12))})df = df.set_index('week') def reindex_by_max_index_of_group(df): index = range(1,max(df.index) + 1) return df.reindex(index,fill_value=0)df = df.groupby('product').apply(reindex_by_max_index_of_group)df.drop(['product'],inplace=True,axis=1)print df.reset_index()# product week sales#0 a 1 1#1 a 2 2#2 a 3 4#3 a 4 0#4 a 5 8#5 b 1 16#6 b 2 32#7 b 3 64#8 b 4 0#9 b 5 128#10 c 1 256#11 c 2 512#12 c 3 1024#13 c 4 2048总结
以上是内存溢出为你收集整理的python – 熊猫滚动总和与不均匀间隔索引全部内容,希望文章能够帮你解决python – 熊猫滚动总和与不均匀间隔索引所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)