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

如何将两个CSV文件数据合并至土壤样本主文件并确保数据匹配对应行?

土壤样本数据匹配合并解决方案

依赖准备

先确保安装了pandas(处理CSV的首选工具库):

pip install pandas

核心代码(可直接复用)

下面的代码支持手动指定样本编号列名、自定义列映射,会自动匹配样本并填充数据,同时保留主文件的所有原始行:

import pandas as pd

# --------------------------
# 手动配置区(根据你的实际情况修改)
# --------------------------
MAIN_CSV_PATH = "main_soil_samples.csv"  # 主文件路径
LAB_CSV_PATH = "lab_analysis_data.csv"   # 实验室数据文件路径
MAIN_SAMPLE_COL = "Sample_Coord_ID"      # 主文件的样本编号列名
LAB_SAMPLE_COL = "Sample_Ref_No"         # 实验室文件的样本编号列名
# 手动列映射:实验室列名 → 主文件目标列名(不需要匹配的列可以不写)
COLUMN_MAPPING = {
    "Total_Nitrogen": "总氮含量",
    "Available_P": "有效磷含量",
    "Soil_pH": "土壤pH",
    "Organic_Matter": "有机质含量"
}
OUTPUT_PATH = "merged_soil_data.csv"     # 合并后的输出文件路径

# --------------------------
# 数据处理逻辑
# --------------------------
# 读取两个CSV文件
main_df = pd.read_csv(MAIN_CSV_PATH)
lab_df = pd.read_csv(LAB_CSV_PATH)

# 重命名实验室数据的列(按照手动映射)
lab_df_renamed = lab_df.rename(columns=COLUMN_MAPPING)

# 保留实验室数据中需要的列:样本编号列 + 已重命名的分析列
keep_cols = [LAB_SAMPLE_COL] + list(COLUMN_MAPPING.values())
lab_df_filtered = lab_df_renamed[keep_cols]

# 匹配合并数据:以主文件为基准,按样本编号匹配
merged_df = pd.merge(
    main_df,
    lab_df_filtered,
    left_on=MAIN_SAMPLE_COL,
    right_on=LAB_SAMPLE_COL,
    how="left"  # 保留主文件所有行,未匹配到的分析列会显示NaN
)

# 移除冗余的实验室样本编号列(如果不需要保留)
merged_df = merged_df.drop(columns=[LAB_SAMPLE_COL])

# 检查未匹配的样本(可选,方便排查)
unmatched_samples = main_df[~main_df[MAIN_SAMPLE_COL].isin(lab_df[LAB_SAMPLE_COL])]
if not unmatched_samples.empty:
    print(f"注意:以下样本未找到匹配的实验室数据:\n{unmatched_samples[MAIN_SAMPLE_COL].tolist()}")

# 保存合并后的文件
merged_df.to_csv(OUTPUT_PATH, index=False, encoding="utf-8-sig")
print(f"合并完成,结果已保存至 {OUTPUT_PATH}")

使用说明

  1. 修改手动配置区的所有参数,确保路径、列名和映射关系和你的实际文件一致
  2. 运行代码后,未匹配到实验室数据的样本,对应分析列会显示NaN,同时控制台会打印未匹配的样本编号
  3. 输出的CSV文件会保留主文件的所有原始列,同时添加匹配后的分析数据列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:52:34