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

如何处理Pandas读取HTML表格后的重复列与字段拆分?

解决HTML表格提取后的格式问题

问题分析

使用pd.read_html("synced_contacts.html")提取表格后,dfs[1]存在两个核心问题:

  • 数据在两列重复
  • 字段名与值合并(如First NameDaniela),未拆分

解决步骤

1. 移除重复列

先提取dfs[1]中的有效单列(假设重复列是前两列,取第一列即可,可根据实际列索引调整):

# 提取第一列作为原始数据列
df = dfs[1].iloc[:, 0].to_frame(name='raw_data')

2. 拆分字段名与值

针对First NameDaniela这类字符串,用正则匹配字段名(带空格的英文标识)和值(大写开头的内容)的分界点,完成拆分:

import re

# 正则规则:匹配字段名部分和值部分
pattern = r'([A-Za-z\s]+)([A-Z][a-z]+)'

# 拆分并生成字段、值两列
df[['Field', 'Value']] = df['raw_data'].str.extract(pattern)

# 清理字段名的多余空格
df['Field'] = df['Field'].str.strip()

3. 转换为目标格式

如果需要将字段作为列名、对应值作为行数据,可通过重塑表格实现:

# 转换为宽表格式
final_df = df.set_index('Field')['Value'].unstack().reset_index()

完整代码示例

import pandas as pd
import re

# 读取HTML表格
dfs = pd.read_html("synced_contacts.html")
# 提取有效列
df = dfs[1].iloc[:, 0].to_frame(name='raw_data')

# 拆分字段与值
pattern = r'([A-Za-z\s]+)([A-Z][a-z]+)'
df[['Field', 'Value']] = df['raw_data'].str.extract(pattern)
df['Field'] = df['Field'].str.strip()

# 生成目标格式表格
final_df = df.set_index('Field')['Value'].unstack().reset_index()
print(final_df)

适配调整说明

  • 如果值包含数字、小写开头等情况,可将正则调整为r'([A-Za-z\s]+)(.+)'以适配更多格式
  • 若重复列的位置不是第一列,修改iloc[:, 0]中的索引值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:40:47