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
相关产品推荐
相关产品推荐

