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

如何将Dataframe还原为指定格式数组并正确写入CSV?

解决Dataframe还原特定格式数组并写入CSV的问题

场景还原

初始待处理的CSV内容是:1.0,2.0,1.0,4.0;2.0,3.0,1.0,2.0;1.0,4.0,6.0,3.0,需求是先读取分割成数组,转成Dataframe后,再还原成原格式写入CSV。过程中踩了csv.writer的坑,最后用直接写入字符串的方式搞定。

具体操作步骤

1. 读取分割成数组

先把原始字符串按分号拆成每行,再把每行按逗号拆成列,得到二维数组:

import pandas as pd

raw_content = "1.0,2.0,1.0,4.0;2.0,3.0,1.0,2.0;1.0,4.0,6.0,3.0"
# 按分号分割成行
row_list = raw_content.split(';')
# 每行按逗号分割成列,得到二维数组
data_array = [row.split(',') for row in row_list]

2. 转成Dataframe(按需处理)

如果需要用Dataframe做数据清洗或计算,直接转换即可:

df = pd.DataFrame(data_array)
# 若需要数值类型,可做类型转换
df = df.astype(float)

3. 写入CSV的坑与解决

  • 踩坑点:用csv.writer写入时,会把每个字符拆成单独列——因为如果直接传入字符串行,writer会把字符串当成可迭代对象,逐个字符拆分。
  • 最优解法:直接拼接成目标格式的字符串写入文件,一步到位:
# 从原始分割的行直接拼接写入
output_str = ';'.join(row_list) + '\n'
with open('result.csv', 'w', encoding='utf-8') as f:
    f.write(output_str)

# 要是从Dataframe转回去,这么写
# 先把每行转成逗号分隔的字符串,再用分号连起来
df_output_str = ';'.join(df.astype(str).apply(','.join, axis=1)) + '\n'
with open('result_from_df.csv', 'w', encoding='utf-8') as f:
    f.write(df_output_str)

补充:用csv.writer的正确姿势(如果非要用)

要是坚持用csv.writer,得指定分隔符为分号,而且要传入二维数组(不能传字符串),但这样写出来的是换行分隔行、分号分隔列的标准CSV,和原格式的单行分号分隔行不一样,按需选择:

import csv
with open('result_csv_writer.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f, delimiter=';')
    writer.writerows(data_array)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:46:14