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

如何从pandas数据框的HTML格式description列提取字段生成新列

实现方法

方案一:BeautifulSoup HTML解析(推荐,容错性强)

先安装依赖库:
pip install beautifulsoup4 lxml

完整执行代码:

import pandas as pd
from bs4 import BeautifulSoup

# 定义单条description解析函数
def parse_description(html_str):
    soup = BeautifulSoup(html_str, "lxml")
    kv = {}
    for b_tag in soup.find_all("b"):
        # 提取<b>标签内容作为列名,去掉末尾的冒号
        col = b_tag.get_text().strip().removesuffix(":")
        # 提取<b>标签后紧跟的文本内容作为值
        val = b_tag.next_sibling.strip()
        kv[col] = val
    return pd.Series(kv)

# 批量解析description列,合并到原数据表
extracted_cols = data["description"].apply(parse_description)
data = pd.concat([data, extracted_cols], axis=1).drop(columns=["description"])

运行完成后,原description里的所有<b>标签对应的字段都会自动生成为新列,对应值填充到对应行,缺失字段自动填充NaN。


方案二:正则表达式匹配(无额外依赖,适合格式固定的场景)

如果你的description格式严格统一,不需要额外安装解析库,直接用pandas内置的正则方法即可:

import re

# 匹配<b>标签的键值对规则
pattern = r"<b>(.*?):</b>\s*(.*?)(?:<br>|\n|</div>)"
extracted_cols = data["description"].str.extractall(pattern)\
                .groupby(level=0)\
                .apply(lambda x: x.set_index(0)[1].unstack())

data = pd.concat([data, extracted_cols], axis=1).drop(columns=["description"])

内容的提问来源于stack exchange,提问作者IPII

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 18:45:04