You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 10:24:21