如何从文本文件的分隔行创建含两列的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
相关产品推荐
相关产品推荐

