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

Python中基于Result列修正Status列值并合并Excel文件

高效Python实现方案:修正Status并合并Excel数据

咱直接用pandas来搞定这个需求,它处理表格数据和Excel操作的效率拉满,完全符合你的要求。下面是分步实现的思路和完整代码:

步骤1:明确Status与Result的正确映射规则

首先你得把题目里提到的特定对应关系整理成字典,比如假设你的规则是(你可以根据实际情况修改):

  • Result为"Completed" → Status修正为"SP"
  • Result为"Failed" → Status修正为"FA"
  • Result为"Pending" → Status修正为"WO"
status_result_map = {
    "Completed": "SP",
    "Failed": "FA",
    "Pending": "WO"
}

步骤2:读取待处理数据与现有Excel文件

用pandas的read_excel方法读取两个文件,这里假设:

  • 待修正数据.xlsx是包含错误Status的数据源
  • 现有数据.xlsx是需要合并进去的目标文件
import pandas as pd

# 读取待修正的数据
df_to_fix = pd.read_excel("待修正数据.xlsx")
# 读取现有Excel数据
df_existing = pd.read_excel("现有数据.xlsx")

步骤3:修正Status列的错误取值

直接用map方法根据Result列和映射字典替换错误的Status值,一步到位:

# 修正Status列,用Result匹配映射字典;若Result不在映射中则保留原Status
df_to_fix["Status"] = df_to_fix["Result"].map(status_result_map).fillna(df_to_fix["Status"])

步骤4:以ADSL为匹配键合并数据

用merge方法实现合并,这里选择left连接(保留现有数据的所有行,只把修正后的数据匹配进去),你也可以根据需求换成inner(只保留双方都有的ADSL)或者outer(保留所有行):

# 合并数据,on指定匹配键为ADSL,how选择合并方式
df_merged = pd.merge(df_existing, df_to_fix[["ADSL", "Status"]], on="ADSL", how="left", suffixes=("", "_fixed"))

# 用修正后的Status覆盖现有数据的对应值,未匹配到的保留原Status
df_merged["Status"] = df_merged["Status_fixed"].fillna(df_merged["Status"])
# 删掉临时生成的辅助列
df_merged.drop(columns=["Status_fixed"], inplace=True)

步骤5:保存合并后的结果回Excel

最后把处理好的数据保存回文件(建议先保存到新文件,避免误覆盖原数据):

# 保存到新文件,index=False避免生成多余的索引列
df_merged.to_excel("合并后的数据.xlsx", index=False)

完整可运行代码

把上面的步骤整合起来,就是完整的实现代码:

import pandas as pd

# 1. 定义Status与Result的正确映射(根据你的实际规则修改)
status_result_map = {
    "Completed": "SP",
    "Failed": "FA",
    "Pending": "WO"
}

# 2. 读取数据
df_to_fix = pd.read_excel("待修正数据.xlsx")
df_existing = pd.read_excel("现有数据.xlsx")

# 3. 修正Status列
df_to_fix["Status"] = df_to_fix["Result"].map(status_result_map).fillna(df_to_fix["Status"])

# 4. 合并数据
df_merged = pd.merge(df_existing, df_to_fix[["ADSL", "Status"]], on="ADSL", how="left", suffixes=("", "_fixed"))
df_merged["Status"] = df_merged["Status_fixed"].fillna(df_merged["Status"])
df_merged.drop(columns=["Status_fixed"], inplace=True)

# 5. 保存结果
df_merged.to_excel("合并后的数据.xlsx", index=False)

额外说明

  • 如果Excel文件有多个工作表,可以用pd.read_excel的sheet_name参数指定读取目标工作表
  • 哪怕数据量达到几十万行,pandas也能高效处理,比手动操作Excel快N倍
  • 合并方式可灵活调整:how="left"保留现有数据所有行,how="inner"只保留两边共有的ADSL行,how="outer"保留所有行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:17:16