by group 累加中文字段_pandas中分组情况下使用expanding()

文章讨论了在Pandas中使用`cumsum()`、`expanding()`、`rolling()`计算累计百分比时,遇到分组后索引不一致可能导致的问题。指出直接拼接可能导致预期结果出错,强调保持分组前后索引一致的重要性。通过实例展示了如何依据供应商分组计算累计数量,并实现累计数量占总计数量的百分比计算。文章以解决这个问题为目标,并祝读者新年快乐。
摘要由CSDN通过智能技术生成

在微信公众号上有一篇文章,讲解了在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里数据运算的一大优势就在于

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值