Pandas如何解析DataFrame段落文本列拆分生成多个新字段列
可行实现方案
完全可以实现,核心是通过正则匹配固定字段的键值边界,结合pandas原生字符串操作批量解析,不需要逐行循环,处理效率很高。
核心思路
你要提取的几个字段都有固定的文本前缀(字段名+冒号),值的范围是从当前冒号后开始,到下一个字段名出现、或者文本末尾结束,只需要写正则匹配这个边界规则,就能把所有字段值批量拆出来。
具体实现代码
import pandas as pd import re # 先列好所有需要提取的字段名 target_fields = [ "Provider name", "Provider specialty", "Referring provider name", "Referring provider specialty", "Account name" ] # 构造正则匹配规则:自动识别字段前缀,过滤值外层的双引号,适配空值场景 match_pattern = re.compile( r'(' + '|'.join(map(re.escape, target_fields)) + r'):\s*"*([^"]*?)"*(?=\s*(?:' + '|'.join(map(re.escape, target_fields)) + r'|$))' ) # 批量解析reason列的所有键值对,转成独立列 parsed_result = df['reason'].str.extractall(match_pattern) \ .pivot(columns=0, values=1) \ .droplevel(1) # 清除多匹配场景生成的冗余索引 # 把解析结果合并回原DataFrame,按需调整列名 final_df = df.join(parsed_result).rename(columns={ "Provider name": "Provider Name", "Provider specialty": "Provider Specialty" })
效果说明
- 你给出的示例文本经过解析后,
Provider Name列值为Doe, Jane,Provider Specialty列值为Medical Oncology,无内容的Referring相关字段自动留空,Account name列会保留完整的长文本值,和你预期的输出结构完全一致。 - 遇到某条记录缺失某个字段的情况,对应列会自动填充为空值,不需要额外写异常判断。
- 字段值外层包裹的多余双引号会被正则自动过滤,不会出现在最终结果里。
内容的提问来源于stack exchange,提问作者dsexplorer
相关产品推荐
相关产品推荐

