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

无法为从HTML解析的已有DataFrame映射新增列的原因咨询

无法为HTML表格解析的DataFrame添加新列的原因分析

问题背景

我们有一项SES服务,将Outlook邮件以HTML格式存储并可通过API链接访问。目前通过Python提取邮件关键信息,已成功将API返回的HTML表格存入DataFrame,但无法为该DataFrame添加新列。

相关代码

import json
from urllib.request import urlopen
from operator import itemgetter
import pandas as pd
import requests
import re
from datetime import datetime, timedelta


with urlopen('https://pv-ft-marketdata-store.ihsmvals-dev.com/email/search?asof=2022-07-20') as resp:
    json_data = json.load(resp)

json_data.sort(key=itemgetter("processed"), reverse=True)
for i in range(0,len(json_data)):
    if re.findall("Morgan Stanley Systematic Strategies Daily Level",json_data[i]["subject"]):
        key = json_data[i]["key"]
        subject = json_data[i]["subject"]
        Date = re.findall(r'\d{4}-\d{2}-\d{2}',json_data[i]["subject"])
print(subject)
print(key)
print(Date)
#("Morgan Stanley Systematic Strategies Daily Level"))
URL = "https://pv-ft-marketdata-store.ihsmvals-dev.com/email/" + key + "/data/html"

html = requests.get(URL).content
df_list = pd.read_html(html)
df = df_list[-1]


Pkey = {'MSUSDSP5': 71763307, 'MSUSSPVP': 76366654,'MSCBICCO':137292386, 'MSCBWGSP':151971418, 'MSCBBGEC':151971419, 'MSUSEVHI':152547427, 'MSCBCTAD':152547426}

df['Pkey'] = df['Ticker'].map(Pkey)
print(df.head().to_dict())

相关截图说明

  • 截图1:展示了解析后DataFrame的原有列结构,包含Ticker等字段
  • 截图2:展示了尝试添加Pkey列后的结果,疑似新列未成功显示或值为空

可能的原因及解决方法

  • Ticker值与Pkey字典键不匹配:检查DataFrame中Ticker列的实际值,是否和Pkey字典的键在大小写、空格、特殊字符上完全一致。比如Ticker列值为小写而字典键为大写,会导致映射失败,Pkey列全为NaN。解决:统一两者格式,或映射时做大小写转换(如df['Ticker'].str.upper().map(Pkey))。
  • 列名称存在格式问题:确认DataFrame的列名中确实有Ticker,避免HTML解析后列名带有空格、换行或特殊字符(比如 Ticker)。可以通过print(df.columns)查看所有列名,若存在格式问题,先重命名列(如df.rename(columns={' Ticker': 'Ticker'}, inplace=True))。
  • DataFrame为视图而非副本:pd.read_html返回的DataFrame可能是原数据的视图,添加列时会触发警告或失败。解决:先复制DataFrame,执行df = df.copy()后再添加列。
  • 映射后全为NaN导致误判:若Ticker列的所有值都不在Pkey字典的键中,Pkey列会全是NaN,看起来像未添加成功。可以通过print(df.columns)确认Pkey列是否存在,若存在则需要补充Pkey字典的键值对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:15:50