如何修复pandas导入CSV时所有数据集中在一列的问题?
解决CSV导入Python后列合并为一列的问题
看起来你遇到的是pandas没能正确识别CSV文件分隔符的问题,导致整行内容都被当成了单列数据。我来帮你拆解下问题和对应的解决办法:
问题根源
你看到的col1\col2\col3其实是**制表符(Tab)**的转义显示(Python中制表符用\t表示),这说明你的CSV文件是用制表符分隔的,而非pandas默认的逗号分隔符。这种情况下,pandas会把整行内容都识别成单列数据。
解决方案
1. 指定正确的分隔符
直接在pd.read_csv中设置sep='\t'即可,修改你的导入函数如下:
def import_csv(path): return pd.read_csv(path, encoding='utf-16', sep='\t') df = import_csv('path to CSV')
这样pandas就能正确把每行内容按制表符拆分成多列了。
2. 验证真实分隔符(可选)
如果不确定文件的分隔符是什么,可以先手动读取文件第一行查看原始内容:
with open('path to CSV', 'r', encoding='utf-16') as f: print(f.readline())
运行后你会看到原始的分隔符(比如制表符会显示为一段空白,逗号就是逗号),再对应设置sep参数即可。
3. 为什么sep="\n"没用?
sep="\n"是告诉pandas把每一行作为一列的内容,这完全和你“拆分每行到多列”的需求相反,所以这个设置是错误的,自然解决不了问题。
内容的提问来源于stack exchange,提问作者jceg316
相关产品推荐
相关产品推荐

