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

如何使用循环批量合并多组Table与Table 2并生成对应新表?

批量循环合并Table 1.N与Table 2生成新表方案

核心思路

通过循环遍历所有Table 1.N表,逐个与Table 2按共享列A做关联合并,最后导出对应新表。以下以Python pandas库为例(处理大批量表格效率最优),给出两种常见场景的实现代码。


场景1:表格存储在Excel文件中(每个表对应一个sheet)

import pandas as pd

# 1. 读取Table 2
table2 = pd.read_excel("你的表格文件路径.xlsx", sheet_name="Table 2")

# 2. 循环处理100张Table 1.N
for n in range(1, 101):
    # 读取当前Table 1.N
    sheet_name = f"Table 1.{n}"
    table1_n = pd.read_excel("你的表格文件路径.xlsx", sheet_name=sheet_name)
    
    # 3. 按列A合并表格(inner表示只保留两边都匹配的行,可换成left保留Table 1.N全部行)
    merged_table = pd.merge(table1_n, table2, on="A", how="inner")
    
    # 4. 保存合并后的表(两种方式可选)
    # 方式1:保存为独立Excel文件
    merged_table.to_excel(f"合并结果_Table 1.{n}.xlsx", index=False)
    
    # 方式2:保存到同一Excel的不同sheet(需先创建空文件,后续追加)
    # with pd.ExcelWriter("所有合并结果汇总.xlsx", mode="a", engine="openpyxl") as writer:
    #     merged_table.to_excel(writer, sheet_name=f"Table 1.{n}'", index=False)

场景2:表格已加载为DataFrame字典

如果已经通过其他方式将所有Table 1.N加载到字典(键为表名,值为DataFrame),可直接遍历字典处理:

import pandas as pd

# 假设已加载好的Table 1.N字典
table1_dict = {
    "Table 1.1": pd.DataFrame({"A": [1,2,3], "B": ["a","b","c"]}),
    "Table 1.2": pd.DataFrame({"A": [4,5,6], "B": ["d","e","f"]}),
    # ... 此处省略其他98张表的DataFrame
}

# 读取或加载Table 2
table2 = pd.DataFrame({"A": [1,2,3,4,5,6,7,8,9], "C": ["x","y","Z","p","q","r","s","t","u"]})

# 循环合并并保存
for table_name, table1_n in table1_dict.items():
    merged_table = pd.merge(table1_n, table2, on="A", how="inner")
    merged_table.to_excel(f"{table_name}'.xlsx", index=False)

关键注意事项

  • 合并规则调整:pd.merge的how参数可按需选择:
    • inner:仅保留列A在两张表中都存在的行
    • left:保留Table 1.N的所有行,Table 2无匹配则C列留空
  • 数据类型统一:确保所有表的列A数据类型一致(比如都是整数或字符串),避免匹配失败,可通过table1_n["A"] = table1_n["A"].astype(int)统一类型
  • CSV文件适配:如果是CSV格式,将read_excel替换为read_csv,to_excel替换为to_csv即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:36:07