如何在Python中处理特定格式文本文件并生成目标DataFrame?
实现方案
你的原始文本规律很清晰:每组数据以前导空格较少的行开头(比如 2.0 0 3 9.15400),后续跟着缩进更多的行;需要提取开头行的最后一个数值(如9.15400),再把后续所有缩进行的数值拼接在它后面,最终转成DataFrame。
用Python + Pandas可以轻松实现,步骤如下:
1. 读取并预处理文本
先把文本文件读进来,过滤空行并保留原始缩进信息:
with open('你的文件名.txt', 'r') as f: # 保留非空行的原始内容(包括缩进) lines = [line for line in f if line.strip()]
2. 分组拼接数据
遍历所有行,按缩进区分起始行和后续行,把每组数据合并成一个列表:
result = [] current_group = [] for line in lines: # 统计当前行的前导空格数,区分起始行和后续行 leading_spaces = len(line) - len(line.lstrip()) # 把当前行的内容转成浮点数组 nums = list(map(float, line.strip().split())) # 前导空格少的是起始行(比如≤2个空格) if leading_spaces <= 2: # 如果之前有未保存的组,先存入结果 if current_group: result.append(current_group) # 初始化新组,只保留起始行的最后一个数值 current_group = [nums[-1]] else: # 后续行的数值直接追加到当前组 current_group.extend(nums) # 别忘了把最后一组数据加入结果 if current_group: result.append(current_group)
3. 转换为DataFrame
用Pandas把整理好的列表转成DataFrame,短行会自动补NaN(如果不需要可以后续处理):
import pandas as pd df = pd.DataFrame(result) # 可以手动设置列名,比如df.columns = ['主值', '数值1', '数值2', ...] print(df)
运行后输出的结构就完全符合你的需求,比如第一行就是9.15400 5.40189 0.77828 0.66432 0.44219 0.00000。
内容的提问来源于stack exchange,提问作者Montana
相关产品推荐
相关产品推荐

