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

将类CSV字符串格式数据转为Pandas DataFrame(大文件适配)

问题解决:CSV转空格分隔表格(40MB文件处理)

原代码错误分析

  1. StringIO使用错误:你用StringIO("12test.txt")是把字符串"12test.txt"当成文件内容传给read_csv,而非读取实际文件,导致读取的DataFrame为空或无效。read_csv可直接接收文件路径,无需StringIO包裹。
  2. DataFrame调用字符串方法:a.split('\n')完全错误,a是DataFrame对象,没有split方法——该方法仅属于字符串类型。
  3. 分割符错误:row.split('.')用点作为分割符,但你的数据是逗号分隔,且不需要按点拆分。

解决方案一:Pandas正确处理(适合40MB文件)

40MB的CSV文件用Pandas处理完全没问题,以下是修正后的代码:

import pandas as pd

# 直接读取文件,header=None表示文件无预设表头
df = pd.read_csv("12test.txt", sep=",", header=None, error_bad_lines=False)

# 移除每行开头的无用数字列(索引为0的列)
df = df.drop(columns=0)

# 将第一行设置为表头,后续行作为数据
df.columns = df.iloc[0]
df = df[1:]

# 重置索引(可选,让索引从0开始)
df = df.reset_index(drop=True)

# 输出为空格分隔的格式,与目标结构一致
print(df.to_csv(sep=" ", index=False, header=True))

解决方案二:逐行处理(极端内存不足时用)

如果内存确实紧张,用原生文件操作逐行处理,内存占用极低:

# 逐行读取并处理,避免一次性加载整个文件
output_content = []
with open("12test.txt", "r", encoding="utf-8") as input_file:
    for line_num, line in enumerate(input_file):
        # 去掉换行符,按逗号分割每个字段,同时去掉字段两端的引号
        processed_fields = [field.strip('"') for field in line.strip().split(',')]
        # 移除第一个无用的数字字段
        cleaned_fields = processed_fields[1:]
        if line_num == 0:
            # 第一行作为表头,用双空格分隔
            output_content.append('  '.join(cleaned_fields))
        else:
            # 数据行同样用双空格分隔
            output_content.append('  '.join(cleaned_fields))

# 打印结果
print('\n'.join(output_content))

# 若要保存到文件,取消下面注释:
# with open("output_table.txt", "w", encoding="utf-8") as output_file:
#     output_file.write('\n'.join(output_content))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:40:33