在微信公众号上有一篇文章,讲解了在pandas中通过cumsum、expanding、rolling函数,最终将累加值除以总计值得出累计百分比的实现过程。链接如下:
https://mp.weixin.qq.com/s/TrvIMX5xivIzUPL78XYegg
里面有这一段,我认为是不妥的。
orderamt = pd.read_excel('orderamt.xlsx')orderamt['mon'] = orderamt['dt'].dt.strftime('%Y-%m')orderamt_mon_group = orderamt.groupby('mon').expanding(min_periods=1)['amt'].sum()#这里的orderamt_mon_group索引会有两重,我们直接取values的值就可以和原dataframe拼接在一起orderamt['orderamt_mon_group'] = orderamt_mon_group.valuesorderamt
不妥的原因在于,orderamt_mon_group分组后会形成自己新的索引,这个索引与原来orderamt的索引已经不再相同,那么此时再直接拼接则不妥,因为大概率会得不到预期的结果。
如何纠正这种不妥?
正确的方法应该是在拼接前,我们在分组时或分组后,对索引要保持警惕,在整个过程中要确保分组后的索引与原来的索引保持一致;pandas里数据运算的一大优势就在于