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

Python合并列名不一致的CSV文件及编码报错解决求助

解决CSV合并的编码问题与列对齐方案

一、修复UnicodeDecodeError编码错误

出现该错误是因为指定的编码(cp1252)无法解析文件中的部分字符,可通过以下方式解决:

  • 优先尝试UTF-8编码读取:
    df_file = pd.read_csv(csvfile, encoding='utf-8')
    
  • 若仍报错,添加错误处理参数替换/忽略无法解码的字符:
    df_file = pd.read_csv(csvfile, encoding='cp1252', errors='replace')
    
  • 备选方案:使用latin-1编码,它能兼容所有字节(不会报错,但部分特殊字符可能显示异常):
    df_file = pd.read_csv(csvfile, encoding='latin-1')
    

二、合并列名不统一的CSV文件

Pandas的pd.concat()原生支持自动对齐不同列的DataFrame,无需预先创建空表。如果需要强制保留指定列(Header1、Header2、Header3、Header4),可在读取后筛选目标列,缺失列会自动填充NaN。

修正后的完整代码

import pandas as pd
import glob

# 预定义需要保留的目标列
TARGET_COLUMNS = ['Header1', 'Header2', 'Header3', 'Header4']

# CSV文件路径
data_location = 'C:\\Tableau Reports\\ST Database\\Files\\Downloads\\CSV Files\\*.csv'
csv_files = glob.glob(data_location)

# 存储所有读取后的DataFrame
df_list = []

for csv_file in csv_files:
    # 处理编码问题,可根据实际情况调整编码参数
    df = pd.read_csv(csv_file, encoding='latin-1')
    # 筛选目标列,缺失列自动补NaN
    df_filtered = df[TARGET_COLUMNS]
    df_list.append(df_filtered)

# 合并所有DataFrame,重置索引避免重复
combined_df = pd.concat(df_list, ignore_index=True)

print(combined_df)

关键说明

  • 若不需要强制保留指定列,删除df_filtered = df[TARGET_COLUMNS]一行即可,pd.concat()会自动保留所有出现过的列。
  • ignore_index=True参数会重置合并后的索引,避免出现重复索引问题。

内容的提问来源于stack exchange,提问作者Muhammad Adeel Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:24:32