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

如何将特定格式的文本文件转换为Pandas DataFrame?

竖线分隔文本转Pandas DataFrame的解决方法

一、修正CSV读取代码(推荐)

你的问题核心是pd.read_csv()的参数配置错误,只要指定正确的分隔符、引号规则,就能直接生成符合要求的DataFrame:

import pandas as pd

# 读取文件,关键参数配置
df = pd.read_csv(
    "your_file.txt",
    sep="|",               # 指定竖线为分隔符
    quotechar='"',         # 识别双引号包裹的字段
    usecols=lambda col: col.strip() != "",  # 过滤末尾空列
    skipinitialspace=True  # 自动跳过分隔符后的空格(可选,增强兼容性)
)

参数说明:

  • sep="|":明确告诉Pandas用竖线分割列
  • quotechar='"'::自动去除字段两端的双引号,比如把"FACT"转为FACT
  • usecols:因为每行末尾的|会生成空列,用这个参数过滤掉无效空列
  • skipinitialspace:如果文本里分隔符后有空格,会自动忽略,避免列值带空格

二、手动处理文本(自定义场景)

如果需要更灵活的处理逻辑,可以手动读取并解析文本:

import pandas as pd

# 读取文件并过滤空行
with open("your_file.txt", "r") as f:
    lines = [line.strip() for line in f if line.strip()]

# 提取并清洗列名
columns = [col.strip('"') for col in lines[0].split("|") if col.strip()]

# 处理每行数据,转换对应类型
data_rows = []
for line in lines[1:]:
    # 分割后过滤空元素,处理引号和数据类型
    row_values = []
    for val in line.split("|"):
        val = val.strip()
        if not val:
            continue
        # 去掉字符串两端的引号,数字转成int类型
        if val.startswith('"'):
            row_values.append(val.strip('"'))
        elif val.isdigit():
            row_values.append(int(val))
        else:
            row_values.append(val)
    data_rows.append(row_values)

# 构建DataFrame
df = pd.DataFrame(data_rows, columns=columns)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:01:43