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

如何将同列结构的文本转换为7列DataFrame?

实现方法

可以用Python的pandas结合正则表达式处理这种空格分隔的固定列文本,快速转换成指定的7列DataFrame,具体操作如下:

1. 预处理数据

先清理每行开头的行号标记(如[1]),再按任意数量空格分割字段——因为原数据列之间是多空格分隔,直接用普通分割会得到空字符串,正则分割更可靠。

2. 调整列数

原数据去掉行号后有8个字段,按你的需求合并最后两个字段即可得到7列数据。

3. 创建DataFrame

自定义列名,将处理后的行数据传入pd.DataFrame()生成结果。

完整代码示例

import pandas as pd
import re

# 原始文本数据
raw_text = """[1]  genos                   IDV_V   24  0.506472       14.0206       1.17   0 P
[2]  Lcrop                   IDV_V    6  0.768434E-06  0.212724E-04   0.00   0 B
[3]  Lgenos                  IDV_V   24  0.768434E-06  0.212724E-04   0.00   0 B
[4]  Residual                SCA_V  160   1.00000       27.6828       8.83   0 P"""

# 处理每行数据
processed_rows = []
for line in raw_text.split('\n'):
    # 移除开头的行号标记
    cleaned_line = re.sub(r'^\[\d+\]\s+', '', line.strip())
    # 按任意数量空格分割字段
    fields = re.split(r'\s+', cleaned_line)
    # 合并最后两个字段,凑成7列
    if len(fields) == 8:
        fields = fields[:-2] + [' '.join(fields[-2:])]
    processed_rows.append(fields)

# 自定义列名(可根据业务场景调整)
column_names = ['Component', 'Type', 'DF', 'Variance', 'SE', 'Percentage', 'Status']

# 生成DataFrame
df = pd.DataFrame(processed_rows, columns=column_names)

# 查看结果
print(df)

输出结果

Component   Type   DF       Variance           SE Percentage Status
0     genos  IDV_V   24      0.506472      14.0206       1.17    0 P
1     Lcrop  IDV_V    6  0.768434E-06  0.212724E-04       0.00    0 B
2    Lgenos  IDV_V   24  0.768434E-06  0.212724E-04       0.00    0 B
3  Residual  SCA_V  160       1.00000      27.6828       8.83    0 P

补充说明

如果你的7列需求是包含行号(把[1]这类标记作为第一列),可以修改预处理逻辑提取行号:

processed_rows = []
for line in raw_text.split('\n'):
    # 提取行号
    row_num = re.match(r'^\[(\d+)\]', line).group(1)
    # 移除行号部分并分割字段
    cleaned_line = re.sub(r'^\[\d+\]\s+', '', line.strip())
    fields = re.split(r'\s+', cleaned_line)[:6]  # 取前6个数据字段
    processed_rows.append([row_num] + fields)

# 定义包含行号的列名
column_names = ['Index', 'Component', 'Type', 'DF', 'Variance', 'SE', 'Percentage']
df = pd.DataFrame(processed_rows, columns=column_names)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:06:40