pandas将DataFrame存入CSV时如何避免整行被识别为单个字符串
问题原因
你当前代码的my_list中每个元素都是提前用逗号拼接好的单个字符串,pandas构造DataFrame时会把这整个字符串识别为单列的值。CSV导出时因为值内部包含逗号分隔符,pandas会自动添加双引号做转义,最终就出现了Excel打开后整行数据挤在一个单元格带引号的问题。
修复方案
修改列表追加逻辑,不要预拼接字符串,直接存储多元素的列表/元组,保证DataFrame初始化时就是多列结构:
import pandas as pd my_list = [] # 请确保你提前定义的columns变量包含3个列名,和数据列数对应 columns = ["列1", "列2", "列3"] fname = "你的文本文件路径" with open(fname,'r') as f: for line in f: if 'text' in line: # 改为存储3个值组成的列表,不要预拼接逗号 my_list.append([line[2], line[10], line[5]]) df = pd.DataFrame(my_list, columns=columns) # 导出时加index=False可以避免导出多余的行索引列,加encoding参数避免Excel打开中文乱码 df.to_csv('my_file.csv', index=False, encoding='utf_8_sig')
补充说明
如果你不需要保留列名导出,可以在to_csv方法中添加header=False参数。
内容的提问来源于stack exchange,提问作者magicsword
相关产品推荐
相关产品推荐

