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

Python实现CSV与Excel合并、数据差异识别及阈值判断

解决方案

用pandas可以轻松处理这类合并与计算需求,步骤如下:

1. 导入依赖库

import pandas as pd

2. 读取CSV文件并调整列名

CSV里的test date对应目标表的date,values 1对应value 1,先重命名列以便后续合并:

# 读取CSV文件
csv_df = pd.read_csv("你的CSV文件路径.csv")
# 重命名匹配目标列名
csv_df = csv_df.rename(columns={
    "test date": "date",
    "values 1": "value 1"
})
# 只保留需要的列
csv_df = csv_df[["date", "id", "value 1"]]

3. 读取Excel文件(表头在第5行)

Excel表头在第5行,对应pandas的索引4(从0开始计数),同时筛选并重命名需要的列:

# 读取Excel,指定表头所在行
excel_df = pd.read_excel("你的Excel文件路径.xlsx", header=4)
# 重命名列
excel_df = excel_df.rename(columns={
    "values 2": "value 2"
})
# 只保留需要的列
excel_df = excel_df[["date", "id", "value 2"]]

4. 合并两个数据集

基于date和id两列做内连接(仅保留两边都存在的组合;若要保留所有数据,可将how改为outer):

merged_df = pd.merge(csv_df, excel_df, on=["date", "id"], how="inner")

5. 计算差值与判断列

# 计算discrepancy(可根据需求调整差值计算顺序)
merged_df["discrepancy"] = merged_df["value 1"] - merged_df["value 2"]

# 判断差值绝对值是否超过2(逻辑可按需修改)
merged_df["Over 2?"] = merged_df["discrepancy"].abs() > 2

6. 导出结果

# 导出为CSV
merged_df.to_csv("合并结果.csv", index=False)
# 或导出为Excel
# merged_df.to_excel("合并结果.xlsx", index=False)

关键注意事项

  • 确保date列格式统一:如果两边日期格式不同,用pd.to_datetime()转换:
    csv_df["date"] = pd.to_datetime(csv_df["date"])
    excel_df["date"] = pd.to_datetime(excel_df["date"])
    
  • 统一id列数据类型:避免因类型不匹配导致合并失败,可转为字符串或数字:
    csv_df["id"] = csv_df["id"].astype(str)
    excel_df["id"] = excel_df["id"].astype(str)
    
  • 若合并后数据缺失,检查date+id组合是否在某一文件中不存在,改用how="outer"可保留所有数据,缺失值会显示为NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:51:18