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

Python读取CSV后如何拆分合并为单字符串的列名?

解决CSV列名被合并成单个字符串的问题

嘿,我一眼就看出问题出在哪了——你指定的分隔符和文件实际用的不匹配!

问题根源

你代码里用了sep='|',但从输出的列名字符串'RECORD_ID,MDM_ID,SERIES_ID,...'能明显看出来,文件里的列名是用逗号分隔的。这就导致pandas把整个第一行(列名行)当成了单独一列的名称,自然找不到SERIES_ID这个列,所以才会报KeyError。

最简单的解决方案

直接把分隔符改成逗号就行,甚至可以省略sep参数(因为pandas默认的分隔符就是逗号):

import pandas as pd
# 修正分隔符为逗号
df1 = pd.read_csv("D:/Users/SPate233/Downloads/iMedical/AMPIL_DEV/MDM_PRODUCT_VIEW/MDM_PRODUCT_VIEW_H.csv", sep=',')
# 或者直接用默认参数,效果一样
# df1 = pd.read_csv("D:/Users/SPate233/Downloads/iMedical/AMPIL_DEV/MDM_PRODUCT_VIEW/MDM_PRODUCT_VIEW_H.csv")

print(list(df1.columns))
print(df1['SERIES_ID'][2])

运行这段代码后,列名就会被拆分成你期望的独立列表,也能正常访问SERIES_ID列了。

极端情况的应对(万一数据和列名分隔符不一样)

如果遇到奇葩情况:列名用逗号分隔,但数据行用|分隔(这种情况很少见),可以手动拆分列名再加载数据:

import pandas as pd
# 先读取所有内容,不指定列名
df_temp = pd.read_csv("D:/Users/SPate233/Downloads/iMedical/AMPIL_DEV/MDM_PRODUCT_VIEW/MDM_PRODUCT_VIEW_H.csv", sep='|', header=None)
# 拆分第一行的字符串得到列名列表
column_names = df_temp.iloc[0, 0].split(',')
# 跳过第一行,用拆分后的列名加载数据
df1 = pd.read_csv("D:/Users/SPate233/Downloads/iMedical/AMPIL_DEV/MDM_PRODUCT_VIEW/MDM_PRODUCT_VIEW_H.csv", sep='|', skiprows=1, names=column_names)

print(list(df1.columns))
print(df1['SERIES_ID'][2])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:56:00