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

如何修改DataFrame中大于行均值的单元格并将差值存入同结构另一DataFrame

Pandas 实现方案

核心逻辑

  • 按行计算每行的均值
  • 识别所有大于对应行均值的单元格
  • 超均值的单元格默认替换为行均值(可按需调整为其他小于等于均值的数值),原值减新值的结果存入差值表,其余单元格差值为0

完整可运行代码

import pandas as pd

# 示例原DataFrame,可替换为你的实际数据
raw_df = pd.DataFrame({
    '字段1': [3000, 1500, 800],
    '字段2': [1000, 2500, 1200],
    '字段3': [2000, 500, 2200]
})

# 1. 计算每行均值
row_average = raw_df.mean(axis=1)
# 2. 生成大于行均值的布尔掩码
over_avg_mask = raw_df.gt(row_average, axis=0)

# 3. 生成修改后的DataFrame:超均值的位置替换为行均值,其余保留原值
modified_df = raw_df.where(~over_avg_mask, row_average, axis=0)
# 如果需要自定义替换值(比如示例要求3000替换为1000),可自行修改对应位置的赋值逻辑,比如:
# modified_df = raw_df.where(~over_avg_mask, 自定义替换值, axis=0)

# 4. 生成差值DataFrame,和原表行索引、列名完全一致
diff_df = raw_df.sub(modified_df)

# 输出验证
print("原数据:")
print(raw_df)
print("\n修改后数据:")
print(modified_df)
print("\n差值数据:")
print(diff_df)

运行效果说明

以示例中的第一行数据为例:
行均值为(3000+1000+2000)/3 = 2000,原值3000大于均值,默认修改后取值为2000,对应差值为1000,可通过自定义替换值调整为你需要的拆分比例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:09:03