You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:将DataFrame求和差值调整至最后季度以匹配原总和

调整取整后DataFrame的季度列以匹配原始数据总和

需求说明

对比原始DataFrame(original_df)与取整后DataFrame(rounded_df)的总和,若两者总和存在差值(delta),则将该差值通过加减操作应用到最后一季度(q421)列,使最终生成的final_df的总和与original_df完全一致。

数据示例

原始数据(original_df)

id  q121 q221 q321 q421 sum
AA  1    0.5  0.5  6.1  8
BB  1    0.5  6.5  3.1  12

取整后数据(rounded_df)

id  q121 q221 q321 q421 sum
AA  2    2    2    6    12
BB  2    2    6    4    14

期望结果(final_df)

id  q121 q221 q321 q421 sum delta
AA  2    2    2    2    8   4
BB  2    2    6    2    12  2

已完成步骤

  • 对比总和并生成delta列:
    final_df['delta'] = np.where(original_df['sum'] == rounded_df['sum'], 0, original_df['sum'] - rounded_df['sum'])
    

解决方案建议

直接对q421列执行加减delta的操作,同时同步更新sum列即可实现需求:

# 以取整后的数据为基础创建final_df
final_df = rounded_df.copy()

# 计算delta列
final_df['delta'] = np.where(original_df['sum'] == rounded_df['sum'], 0, original_df['sum'] - rounded_df['sum'])

# 调整最后一季度列:用取整后的q421值加上delta
final_df['q421'] = rounded_df['q421'] + final_df['delta']

# 更新sum列,确保与原始数据总和完全一致
final_df['sum'] = original_df['sum']

验证逻辑:以AA行为例,取整后的q421为6,delta为8-12=-4,6 + (-4)=2,与期望结果一致;BB行取整后的q421为4,delta为12-14=-2,4 + (-2)=2,同样符合要求。

内容的提问来源于stack exchange,提问作者Lynn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:05:17