如何用Pandas从单个TXT文件提取多个DataFrame并分别保存?
用Pandas提取TXT中的多个DataFrame并分别保存
完全可以用Pandas实现这个需求,核心思路是先识别TXT中每个DataFrame的分隔位置,再逐块读取并保存。以下是具体实现代码:
import pandas as pd from io import StringIO # 读取txt文件内容,过滤空行 with open('df.txt', 'r') as f: lines = [line.strip('\n') for line in f if line.strip()] # 拆分每个DataFrame的块 df_blocks = [] current_block = [] for line in lines: # 判断是否是表头行:行首非数字(索引行以数字开头) first_char = line.lstrip()[0] if line.lstrip() else '' if first_char.isalpha(): # 遇到新表头,先把之前的块存入(如果有内容) if current_block: df_blocks.append('\n'.join(current_block)) current_block = [] current_block.append(line) # 加入最后一个块 if current_block: df_blocks.append('\n'.join(current_block)) # 逐个处理每个块,保存为csv for idx, block in enumerate(df_blocks, 1): # 用StringIO把字符串转为可读取的流 df = pd.read_csv(StringIO(block), index_col=0) # 保存为csv,保留原格式的空格和结尾逗号 df.to_csv(f'df{idx}.csv', float_format='%g')
代码说明:
- 先读取txt所有行,过滤掉空行,避免干扰拆分逻辑。
- 通过判断行首字符是否为字母(索引行以数字开头)来识别新DataFrame的表头,以此拆分出每个DataFrame的内容块。
- 用
StringIO将每个内容块转为Pandas可读取的对象,读取为DataFrame后保存为独立csv文件。 - 保存时用
float_format='%g'确保NaN和浮点数格式和原文件一致。
执行代码后,会生成df1.csv、df2.csv、df3.csv三个文件,完全匹配你期望的结果。
内容的提问来源于stack exchange,提问作者Husain
相关产品推荐
相关产品推荐

