为了账号安全,请及时绑定邮箱和手机立即绑定

大熊猫在分组上除法通过保持余数

大熊猫在分组上除法通过保持余数

慕容森 2022-08-16 10:53:03
我想以2位精度对列进行除法,但我需要确保它在groupby级别上汇总到所需的数字(200)。我不确定解决这个问题的最佳方法是什么。例:vehicle   |  count  |  result   |  calculationford      |    2    |   100     |  round(200/count, 2) = 100ford      |    2    |   100     |  200 - 100 = 100chevrolet |    3    |   66.67   |  round(200/count, 2) = 66.67chevrolet |    3    |   66.67   |  round(200/count, 2) = 66.67chevrolet |    3    |   66.66   |  200 - 66.67 - 66.67 = 66.66
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

您可以将残差添加到组的最后一个元素,即


df['result'] = df.groupby('vehicle', as_index=False).transform(lambda gr: round(200/len(gr), 2))

def add_resid(gr: pd.DataFrame):

    gr['result'].iloc[-1] += 200 - gr['result'].sum()

    return gr


df['result'] = df.groupby('vehicle', as_index=False).apply(add_resid)

显然,如果你有一个大团体,这将累积错误。另一种方法是以“滚动”方式分配残差。


查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信