Python实现数据按独立单元格写入Excel 替代分号分隔存储
问题说明
- 现有数据处理流程:先将采集到的传感器数据保存为.csv文件,再通过pandas转换为.xlsx格式文件
- 待解决问题:当前代码写入csv时,会将每行的8个数值用分号拼接后存入单个单元格,后续需要额外手动执行文本分列操作才能让每个数值对应独立单元格,需要修改代码省去额外分列步骤
- 运行环境:Python 2.7.18、PyCharm 2022.1.2
- 当前存储效果:整行所有数值被识别为单个字段,全部挤在同一列单元格中,未按字段拆分到独立单元格
现有代码
原csv文件写入代码
# Stores data in Excel File with open(output, "w") as fp: for line in data: fp.write("; ".join(str(x) for x in line)) fp.write("\n")
数据采集逻辑代码
def recordData(memory_service): """ Record the data from ALMemory. Returns a matrix of values """ print "Recording data ..." data = list() startTime = time.time() s = 9.06 while True: currentTime = time.time() elapsedTime = currentTime - startTime line = list() for key in ALMEMORY_KEY_NAMES: value = memory_service.getData(key) line.append(value) print value data.append(line) if elapsedTime > s: return data
csv转xlsx代码
# Reads in the .csv file and converts it to .xlsx readFile = pd.read_csv(r'C:\Users\PycharmProjects\FsrValues5.csv') readFile.to_excel(r'C:\Users\PycharmProjects\Excel Data\New Trials\FsrValues5.xlsx', index=None, header=True)
问题原因
出现该问题的核心是csv分隔符不匹配:
手动写入csv时使用;作为字段间的分隔符,但pandas的read_csv方法默认以英文逗号,作为csv格式的字段分隔符,读取时会把整行内容识别为单个字段,最终转存到Excel时自然全部落在同一个单元格内。
解决方案
两种方案任选其一即可实现数值自动存入独立单元格的效果:
- 方案1(推荐):修改csv写入逻辑,使用标准英文逗号作为分隔符,适配通用csv格式规范
将原csv写入代码替换为以下内容即可,后续pandas转xlsx的代码无需任何修改:
该方案写入的csv文件用Excel、文本编辑器等各类工具打开都能正常识别字段分列,兼容性更好。# 按标准csv格式写入,用英文逗号分隔不同字段 with open(output, "w") as fp: for line in data: fp.write(",".join(str(x) for x in line)) fp.write("\n") - 方案2:不修改原有写入逻辑,在pandas读取csv时手动指定分隔符
仅需修改转xlsx部分的read_csv代码,明确告知pandas当前csv使用的分隔符是;即可:
该方案改动量更小,适合不想调整原有数据写入逻辑的场景。# 读取csv时指定分隔符为分号加空格 readFile = pd.read_csv(r'C:\Users\PycharmProjects\FsrValues5.csv', sep='; ')
内容的提问来源于stack exchange,提问作者user19408396
相关产品推荐
相关产品推荐

