如何在R中导入夹杂额外信息的制表符分隔数据?
处理.result文件生成合并DataFrame的方案
实现思路
- 逐行读取文件,跳过
#开头的无关内容 - 捕获
>开头行的文本,作为对应数据块的来源标识 - 读取每个数据块的表头和数据行,将来源标识作为新列加入,最终合并所有数据
Python代码实现
import pandas as pd data_blocks = [] current_source = None current_header = None # 替换为你的.result文件路径 with open('target_file.result', 'r') as file: for line in file: stripped_line = line.strip() # 跳过空行和注释行 if not stripped_line or stripped_line.startswith('#'): continue # 捕获数据来源标识 if stripped_line.startswith('>'): current_source = stripped_line[1:].strip() current_header = None # 重置表头,准备读取新数据块 continue # 读取表头 if current_header is None: current_header = stripped_line.split() continue # 处理数据行,加入来源列 data_vals = stripped_line.split() data_row = dict(zip(current_header, data_vals)) data_row['data_source'] = current_source data_blocks.append(data_row) # 合并为最终DataFrame final_df = pd.DataFrame(data_blocks) # 可选:将原表头列转换为数值类型 final_df[current_header] = final_df[current_header].apply(pd.to_numeric) # 查看结果 print(final_df)
额外说明
- 采用逐行读取模式,适合处理大体积的.result文件,避免内存过载
- 用
split()处理空白分隔的行,兼容制表符或多空格分隔的格式 - 自动将
>后的文本作为data_source列添加到对应的数据行中,满足数据来源标识需求
内容的提问来源于stack exchange,提问作者Hilarius.Bookbinder
相关产品推荐
相关产品推荐

