如何使用pandas合并两份测深CSV文件生成统一XYZ数据集
实现方法
你的需求是将两份测深数据纵向堆叠合并,而非按字段横向关联,原来使用pd.merge的逻辑不符合需求,正确实现步骤如下:
核心逻辑
- 先对齐两个DataFrame的结构,统一保留X、Y、Z三列
- 处理单波束数据:先将小写的坐标列
x重命名为大写X,再选择你需要的深度列(A/B/C任选)重命名为Z - 用
pd.concat纵向拼接两个结构完全一致的DataFrame即可
完整可运行代码
import pandas as pd # 读取两个CSV文件 df1 = pd.read_csv('CSV1.csv') df2 = pd.read_csv('CSV2.csv') # 处理单波束数据df2,适配统一的XYZ结构 # 1. 统一坐标列名 df2_renamed = df2.rename(columns={'x': 'X'}) # 2. 指定要使用的深度列,需要选B/C作为Z值的话,修改引号内的列名即可 use_depth_col = 'A' # 3. 仅保留需要的三列,并重命名深度列为Z df2_formatted = df2_renamed[['X', 'Y', use_depth_col]].rename(columns={use_depth_col: 'Z'}) # 纵向拼接两个数据集,ignore_index=True用于重置拼接后的行索引 df_merged = pd.concat([df1, df2_formatted], ignore_index=True) # 可选:如果需要去除完全重复的XYZ行,可放开下面的注释 # df_merged = df_merged.drop_duplicates(subset=['X', 'Y', 'Z'], keep='first') # 输出结果到CSV,index=False避免输出多余的索引列 df_merged.to_csv('CSV3.csv', index=False)
原代码问题说明
你之前使用的pd.merge是横向关联操作,会按照指定的关联列(这里是X)把两个表中同X值的行合并为一行,完全不符合你要把两个勘测数据集的行累加合并的需求,因此会得到错误的结果。
内容的提问来源于stack exchange,提问作者User_289
相关产品推荐
相关产品推荐

