猿问

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

我想以2位精度对列进行除法,但我需要确保它在groupby级别上汇总到所需的数字(200)。


我不确定解决这个问题的最佳方法是什么。


例:


vehicle   |  count  |  result   |  calculation


ford      |    2    |   100     |  round(200/count, 2) = 100

ford      |    2    |   100     |  200 - 100 = 100

chevrolet |    3    |   66.67   |  round(200/count, 2) = 66.67

chevrolet |    3    |   66.67   |  round(200/count, 2) = 66.67

chevrolet |    3    |   66.66   |  200 - 66.67 - 66.67 = 66.66


慕容森
浏览 120回答 1
1回答

HUH函数

您可以将残差添加到组的最后一个元素,即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 grdf['result'] = df.groupby('vehicle', as_index=False).apply(add_resid)显然,如果你有一个大团体,这将累积错误。另一种方法是以“滚动”方式分配残差。
随时随地看视频慕课网APP

相关分类

Python
我要回答