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

如何将第二表中的名称替换为第一表对应名称的数值均值?

别担心,我来一步步帮你搞定这个需求!下面我会分享两种最常用的实现方法,你可以根据自己熟悉的工具来选:

方法一:用Excel实现

这个方法适合习惯用办公软件的场景,操作很直观:

  1. 计算第一张表的均值
    假设第一张表的结构是:A列是ID,B、C、D列分别是number_1、number_2、number_3。我们在E列新增一个“均值”列,在E2单元格输入公式:

    =AVERAGE(B2:D2)
    

    输入完成后按回车,然后鼠标拖动E2单元格的右下角填充柄,下拉到所有数据行,这样每个ID对应的均值就计算好了。

  2. 替换第二张表的ID为均值
    假设第二张表中需要替换的ID在G列(对应示例里的v3),我们可以用VLOOKUP函数来匹配:
    在H2单元格输入公式(注意把Sheet1换成你第一张表的实际工作表名称,$A$2:$E$100换成包含所有ID和均值的区域,用绝对引用避免下拉时区域偏移):

    =VLOOKUP(G2, Sheet1!$A$2:$E$100, 5, FALSE)
    
    • 这里的5是均值所在的列数(因为我们把均值放在了第5列)
    • FALSE表示精确匹配,确保只有完全一致的ID才会被替换
      同样下拉填充所有行后,你可以把H列的数值复制,粘贴成“值”到原来的G列,完成替换。
方法二:用Python Pandas实现

如果数据量比较大,用代码处理更高效,步骤如下:

  1. 导入库并读取数据
    先导入Pandas,然后读取你的两张数据表(支持csv、excel等格式,这里以csv为例):

    import pandas as pd
    
    # 读取第一张表
    df1 = pd.read_csv("第一张表.csv")
    # 读取第二张表
    df2 = pd.read_csv("第二张表.csv")
    
  2. 计算每个ID的均值
    给第一张表新增一列mean_value,按行计算三个数值列的均值:

    df1['mean_value'] = df1[['number_1', 'number_2', 'number_3']].mean(axis=1)
    
    • axis=1表示按行计算,对应每个ID的三个数值求平均
  3. 替换第二张表的ID为均值
    这里有两种常用方式:

    • 方式一:用字典映射(简单高效)
      先把第一张表的ID和均值转换成字典,再用map方法替换:

      # 生成ID-均值的字典
      id_mean_map = df1.set_index('ID')['mean_value'].to_dict()
      # 替换第二张表的v3列
      df2['v3'] = df2['v3'].map(id_mean_map)
      

      如果有ID不在第一张表中,map会把它变成NaN,你可以用fillna保留原ID:

      df2['v3'] = df2['v3'].map(id_mean_map).fillna(df2['v3'])
      
    • 方式二:用表合并(更稳妥,适合需要处理缺失值的场景)
      通过合并两张表来匹配均值,再替换原列:

      # 按ID合并两张表,只保留需要的均值列
      df2 = df2.merge(df1[['ID', 'mean_value']], left_on='v3', right_on='ID', how='left')
      # 替换v3列为均值,删除多余的列
      df2['v3'] = df2['mean_value']
      df2.drop(columns=['ID', 'mean_value'], inplace=True)
      
  4. 保存结果
    最后把处理好的第二张表保存成文件:

    df2.to_csv("替换后的第二张表.csv", index=False)
    

内容的提问来源于stack exchange,提问作者Z. Y. Jeng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:29:44