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

将文本文件多行数值转换为CSV并生成指定格式DataFrame

生成目标DataFrame的解决方案

处理步骤及代码

可以用Python的pandas库直接处理这份文本数据,生成符合要求的DataFrame:

1. 核心思路

逐行解析文本内容:

  • 每行第一个元素作为ID列
  • 第二个元素若无法转为浮点数,则作为Tag列;否则Tag列设为缺失值
  • 剩余元素全部转为浮点数,按顺序命名为Val1、Val2等列,缺失位置自动填充为缺失值

2. 完整代码示例

import pandas as pd
import numpy as np

# 原始文本数据
text_data = """foo no 3.61 9.51
bar -26 67 2.35 0.50 70
baz dxo 6 2.37
quez -9.07 51
udx 9.66 9.66
scz -8
pdu hk 0.50 -5.34 -13 0.50
ytrs bl 1.27 -63 -0.66
xle 29 1.27 -8.19
drl -9.68 8.84 -29 -13 -86
kos -5.34 51 91
wen di 9.84 -2.35 88"""

# 解析每行数据
parsed_rows = []
for line in text_data.split('\n'):
    elements = line.strip().split()
    if not elements:
        continue
    current_row = {'ID': elements[0]}
    # 判断第二个元素是否为标签
    try:
        float(elements[1])
        current_row['Tag'] = np.nan
        numeric_vals = list(map(float, elements[1:]))
    except ValueError:
        current_row['Tag'] = elements[1]
        numeric_vals = list(map(float, elements[2:]))
    # 添加数值列
    for idx, val in enumerate(numeric_vals, 1):
        current_row[f'Val{idx}'] = val
    parsed_rows.append(current_row)

# 生成DataFrame并填充缺失值
result_df = pd.DataFrame(parsed_rows).fillna(np.nan)
print(result_df)

3. 最终DataFrame格式

运行代码后得到的结果如下:

IDTagVal1Val2Val3Val4Val5
foono3.619.51NaNNaNNaN
barNaN-26.0067.002.350.5070.00
bazdxo6.002.37NaNNaNNaN
quezNaN-9.0751.00NaNNaNNaN
udxNaN9.669.66NaNNaNNaN
sczNaN-8.00NaNNaNNaNNaN
pduhk0.50-5.34-13.000.50NaN
ytrsbl1.27-63.00-0.66NaNNaN
xleNaN29.001.27-8.19NaNNaN
drlNaN-9.688.84-29.00-13.00-86.00
kosNaN-5.3451.0091.00NaNNaN
wendi9.84-2.3588.00NaNNaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:52:52