如何将含GROUP_FIELD类键的文本转换为指定结构的DataFrame
处理结构化文本生成指定DataFrame
需求说明
原始文本包含GROUP_FIELD_NAME、GROUP_FIELD_VALUE、GROUP_FILENAME三类键,需转换为包含group_field_name、group_field_value、group_file_name三列的DataFrame,每个字段-值对对应一行并关联所属文件名。
原始数据
GROUP_FIELD_NAME:BKR_ID
GROUP_FIELD_VALUE:T80
GROUP_FIELD_NAME:GROUP_OFFSET
GROUP_FIELD_VALUE:0
GROUP_FIELD_NAME:GROUP_LENGTH
GROUP_FIELD_VALUE:0
GROUP_FIELD_NAME:FIRM_ID
GROUP_FIELD_VALUE:KIZEM
GROUP_FILENAME:000000018.pdf
GROUP_FIELD_NAME:BKR_ID
GROUP_FIELD_VALUE:T80
GROUP_FIELD_VALUE:P
GROUP_FIELD_NAME:FI_ID
GROUP_FIELD_VALUE:
GROUP_FIELD_NAME:RUN_DTE
GROUP_FIELD_VALUE:20220208
GROUP_FIELD_NAME:FIRM_ID
GROUP_FIELD_VALUE:KIZEM
GROUP_FILENAME:000000019.pdf
解决方案(Python + Pandas)
代码实现
import pandas as pd # 原始文本内容 raw_text = """GROUP_FIELD_NAME:BKR_ID GROUP_FIELD_VALUE:T80 GROUP_FIELD_NAME:GROUP_OFFSET GROUP_FIELD_VALUE:0 GROUP_FIELD_NAME:GROUP_LENGTH GROUP_FIELD_VALUE:0 GROUP_FIELD_NAME:FIRM_ID GROUP_FIELD_VALUE:KIZEM GROUP_FILENAME:000000018.pdf GROUP_FIELD_NAME:BKR_ID GROUP_FIELD_VALUE:T80 GROUP_FIELD_VALUE:P GROUP_FIELD_NAME:FI_ID GROUP_FIELD_VALUE: GROUP_FIELD_NAME:RUN_DTE GROUP_FIELD_VALUE:20220208 GROUP_FIELD_NAME:FIRM_ID GROUP_FIELD_VALUE:KIZEM GROUP_FILENAME:000000019.pdf""" # 初始化存储容器 data_records = [] current_filename = None current_field = None # 逐行解析文本 for line in raw_text.split('\n'): line = line.strip() if not line: continue key, val = line.split(':', 1) if key == 'GROUP_FILENAME': current_filename = val elif key == 'GROUP_FIELD_NAME': current_field = val elif key == 'GROUP_FIELD_VALUE': if current_field and current_filename: data_records.append({ 'group_field_name': current_field, 'group_field_value': val, 'group_file_name': current_filename }) # 生成DataFrame result_df = pd.DataFrame(data_records) print(result_df)
输出结果
group_field_name group_field_value group_file_name 0 BKR_ID T80 000000018.pdf 1 GROUP_OFFSET 0 000000018.pdf 2 GROUP_LENGTH 0 000000018.pdf 3 FIRM_ID KIZEM 000000018.pdf 4 BKR_ID T80 000000019.pdf 5 BKR_ID P 000000019.pdf 6 FI_ID 000000019.pdf 7 RUN_DTE 20220208 000000019.pdf 8 FIRM_ID KIZEM 000000019.pdf
关键处理说明
- 自动关联字段-值对到最近的
GROUP_FILENAME对应的文件 - 支持一个字段对应多个值的场景(如第二个BKR_ID生成两行记录)
- 保留空的
GROUP_FIELD_VALUE内容
内容的提问来源于stack exchange,提问作者Indrajit Panda
相关产品推荐
相关产品推荐

