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

如何用Python Pandas将特定格式TXT文件转换为目标DataFrame?

解决方法

你的TXT文件结构应该是类似这样的(示例):

Field,Value
First,100
Second,200

Field,Value
First,300
Second,400

直接用pd.read_csv读取后调用pivot会出现每行仅一个值的问题,核心原因是没有给每组数据添加分组标识,导致透视时无法把同组的First和Second值归到同一行。下面是两种可行的解决思路:

方法一:手动添加组ID后透视

import pandas as pd

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

# 分离表头和数据行
header = lines[0].split(',')
data_lines = lines[1:]

# 给每组数据分配组ID(每2行一组)
group_ids = []
current_group = 0
for idx in range(len(data_lines)):
    if idx % 2 == 0:
        current_group += 1
    group_ids.append(current_group)

# 整理数据格式
data = []
for line, gid in zip(data_lines, group_ids):
    field, value = line.split(',')
    data.append({'GroupID': gid, header[0]: field, header[1]: value})

# 生成目标DataFrame
df = pd.DataFrame(data)
result_df = df.pivot(index='GroupID', columns='Field', values='Value').reset_index(drop=True)
print(result_df)

方法二:按块读取直接转单行

如果每组固定包含2条数据(不含表头和空行),可以用chunksize按块读取,直接把每个块转成单行:

import pandas as pd

# 跳过首行表头,按每2行一块读取数据
chunks = pd.read_csv(
    'your_file.txt',
    skiprows=1,
    chunksize=2,
    header=None,
    names=['Field', 'Value']
)

# 逐个处理块,转成单行后合并
result_rows = []
for chunk in chunks:
    result_rows.append(chunk.set_index('Field')['Value'].to_dict())

result_df = pd.DataFrame(result_rows)
print(result_df)

两种方法都能生成以First和Second为列的DataFrame,解决你遇到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:10:49