解决Pandas导出DataFrame至CSV后数据全在一列的问题
解决你的CSV读取与导出列对齐问题
看起来你的代码有几个关键问题,导致导出后Excel里所有数据都挤在一列,咱们一步步来修复:
1. 先修复pd.read_csv的参数错误
你当前的读取代码:
readfile = pd.read_csv('C:\\xx\\xx\\xx, xx.csv','rb')
这里的第二个参数'rb'是完全错误的——pd.read_csv的第二个参数是分隔符sep,而不是文件打开模式('rb'是open()函数的参数)。Pandas会自动处理文件的打开,不需要你手动指定这个,这直接导致Pandas用'rb'作为分隔符解析文件,把每个字符都拆成了单独的“列”,这就是你打印时看到每个字母都分开的核心原因!
先把这行改成:
readfile = pd.read_csv('C:\\xx\\xx\\xx, xx.csv') # 去掉多余的'rb'参数
2. 正确设置分隔符,解析出多列
从你打印的数据来看,原始文件是用**空白字符(空格/制表符混合)**分隔的,所以需要告诉Pandas用任意数量的空白字符作为分隔符:
方案一:用delim_whitespace=True(推荐)
这个参数等价于sep='\s+',专门用于处理空白分隔的文件,稳定性更好:
readfile = pd.read_csv('C:\\xx\\xx\\xx, xx.csv', delim_whitespace=True)
方案二:用sep='\s+'加engine='python'
如果用sep='\s+'报错,大概率是默认的C引擎不支持正则分隔符,加上engine='python'就能解决:
readfile = pd.read_csv('C:\\xx\\xx\\xx, xx.csv', sep='\s+', engine='python')
修改后可以用print(readfile.head())检查一下,确认数据已经分成了正确的多列。
3. 正确导出为Excel可识别的Tab分隔文件
你的导出逻辑没问题,但可以简化(直接传路径给to_csv,不用手动open文件):
readfile.to_csv('T:\\xx\\xx\\xx.csv', index=False, sep='\t')
这样导出的是Tab分隔的文件,Excel打开时会自动识别Tab作为列分隔符,把数据分到对应的列里。
额外提醒
- 你的输入文件路径里有个逗号
xx, xx.csv,确认这是文件名的一部分,不是输入错误哦! - 如果导出后Excel还是没自动拆分列,可以手动打开Excel,用「数据」选项卡的「自文本/CSV」功能,手动选择Tab作为分隔符导入。
最后,完整的修正代码:
import pandas as pd # 正确读取文件,用空白字符分隔 readfile = pd.read_csv('C:\\xx\\xx\\xx, xx.csv', delim_whitespace=True) # 导出为Tab分隔文件,去掉索引 readfile.to_csv('T:\\xx\\xx\\xx.csv', index=False, sep='\t')
内容的提问来源于stack exchange,提问作者Kire
相关产品推荐
相关产品推荐

