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

如何从文本文件的分隔行创建含两列的Pandas DataFrame

处理交替行文本生成双列Pandas DataFrame

问题场景

现有文本文件内容如下,行内容以"A"或"B"交替开头:

A810 WE WILDWOOD DR
B20220901BROOKE
A6223 AMHERST BAY
B20221001SARAI

需要将其读取并转换为包含两列的Pandas DataFrame,使所有"A"开头的行归入"A"列,"B"开头的行归入"B"列,且对应的行处于同一行。

解决方案

方法1:基于行索引直接分离(适用于严格交替的场景)

利用文本行严格交替的特点,通过索引切片提取A、B两类行,再构建DataFrame:

import pandas as pd

# 读取文件并过滤空行
with open('目标文件路径.txt', 'r', encoding='utf-8') as f:
    all_lines = [line.strip() for line in f if line.strip()]

# 提取A开头行(第0、2、4...行)和B开头行(第1、3、5...行)
col_a = all_lines[::2]
col_b = all_lines[1::2]

# 创建DataFrame
result_df = pd.DataFrame({'A': col_a, 'B': col_b})

# 查看结果
print(result_df)

运行后输出:

A               B
0  A810 WE WILDWOOD DR  B20220901BROOKE
1    A6223 AMHERST BAY   B20221001SARAI

方法2:基于内容前缀分组(适配非严格交替场景)

如果文本行的交替顺序可能出现异常,通过判断每行前缀分类后再配对:

import pandas as pd

# 读取所有行
with open('目标文件路径.txt', 'r', encoding='utf-8') as f:
    all_lines = [line.strip() for line in f if line.strip()]

# 分别收集A、B开头的行
a_list = []
b_list = []
for line in all_lines:
    if line.startswith('A'):
        a_list.append(line)
    elif line.startswith('B'):
        b_list.append(line)

# 确保两个列表长度一致,再创建DataFrame
result_df = pd.DataFrame({'A': a_list, 'B': b_list})

print(result_df)

说明

两种方法都能生成符合需求的DataFrame:方法1效率更高,适合确认行严格交替的情况;方法2容错性更强,能处理偶尔出现的顺序偏差(只要A、B行总数相等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:35:17