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

Pandas Merge合并后CSV列数据偏移错位问题求助

解决Pandas Merge后CSV列错位及匹配过滤问题

一、列错位问题排查与解决

CSV列错位大概率是原始文件格式脏数据或匹配列清洗不到位导致,按以下步骤处理:

  • 清洗匹配列的冗余字符
    匹配列Desc和if如果存在前后空格、换行符,会导致匹配失败,出现大量NaN,视觉上表现为右侧列内容偏移。合并前先做清洗:

    import pandas as pd
    
    # 读取CSV时指定基础参数避免解析异常
    df_ifOperStatus = pd.read_csv('WG_ifOperStatus.csv', sep=',', skip_blank_lines=True, encoding='utf-8')
    df_IfDescr = pd.read_csv('TEST_ifDescr.csv', sep=',', skip_blank_lines=True, encoding='utf-8')
    
    # 去除匹配列的前后空格、换行符
    df_IfDescr['Desc'] = df_IfDescr['Desc'].str.strip().str.replace('\n', '').str.replace('\r', '')
    df_ifOperStatus['if'] = df_ifOperStatus['if'].str.strip().str.replace('\n', '').str.replace('\r', '')
    
  • 检查原始CSV格式
    打开原始文件确认是否存在单元格内换行、分隔符混用(比如同时用逗号和制表符)的情况。如果是分隔符问题,在pd.read_csv中指定正确的sep参数,例如sep='\t'或sep=';'。

二、实现匹配过滤需求

你需要过滤掉if列中不在Desc列内的内容,用merge方法可按以下两种场景实现:

场景1:保留左表(df_IfDescr)所有行,仅保留右表中匹配成功的行

先过滤右表,再执行左连接:

# 过滤右表:仅保留if值存在于Desc列中的行
filtered_right = df_ifOperStatus[df_ifOperStatus['if'].isin(df_IfDescr['Desc'])]

# 左合并,确保右表仅输出匹配内容
merge_result = df_IfDescr.merge(filtered_right, left_on='Desc', right_on='if', how='left')

# 导出时指定编码避免乱码
merge_result.to_csv('MergeTEST.csv', index=False, encoding='utf-8')

场景2:仅保留左右表匹配成功的行

直接使用内连接即可,自动过滤两边未匹配的行:

merge_result = df_IfDescr.merge(df_ifOperStatus, left_on='Desc', right_on='if', how='inner')
merge_result.to_csv('MergeTEST.csv', index=False, encoding='utf-8')

三、结果验证

导出后可先通过print(merge_result.head(20))和merge_result.info()查看列数、非空值数量,确认匹配逻辑是否生效,再打开CSV检查列对齐情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:06:16