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

如何遍历Pandas DataFrame拆分HTML表格的合并单元格并保留结构?

解决UFC Stats表格合并单元格拆分问题

问题原因

你之前的re.split无效,大概率是因为网页中的分隔空白不是普通空格,而是非断空格(Unicode编码\u00A0,对应HTML的 ),常规的\s{2,}可能无法匹配到这类空白字符;另外没有对非字符串类型的单元格做判断,也可能导致隐性问题。

解决方案

直接使用pandas的applymap方法遍历整个DataFrame的每个单元格,针对字符串类型的内容做拆分处理,既保留原有DataFrame的行列结构,又能正确拆分合并的单元格内容:

import re
import pandas as pd

# 读取网页表格
tables = pd.read_html('http://www.ufcstats.com/fight-details/451525a1abe30a91')
df = tables[0]

# 定义单元格拆分函数
def split_merged_cell(cell):
    # 仅处理字符串类型的单元格,避免数值等类型报错
    if isinstance(cell, str):
        # 先把网页常见的非断空格替换为普通空格,再用2个及以上空格拆分
        normalized_str = cell.replace('\u00A0', ' ').strip()
        # 拆分后过滤空字符串(避免连续多空格导致的空元素)
        parts = [p for p in re.split(r'\s{2,}', normalized_str) if p]
        # 如果拆分出多个内容就返回列表,否则返回原内容
        return parts if len(parts) > 1 else normalized_str
    # 非字符串类型直接返回原内容
    return cell

# 应用拆分函数到整个DataFrame
processed_df = df.applymap(split_merged_cell)

# 验证效果,比如查看第一个单元格
print(processed_df.iloc[0, 0])

说明

  • 该方法会遍历DataFrame的每一个单元格,仅对字符串类型的内容做处理,不会改变原有行列结构
  • 先替换非断空格为普通空格,确保能匹配到网页中常见的分隔符
  • 拆分后过滤空元素,避免连续多空格导致的无效结果
  • 如果单元格内容不需要拆分(没有双空格分隔),会保留原内容的格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:02:18