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

如何在Pandas DataFrame中新增常数列并解决构造器调用报错

代码报错核心原因
  • pd.read_html()的返回值是由匹配到的表格生成的DataFrame组成的列表,即使页面仅存在1个符合条件的表格,返回结果也是长度为1的列表。代码中直接将列表赋值给df变量,没有取出列表内实际的DataFrame对象,后续操作自然触发构造异常。
  • 新增列的语法使用错误:代码中df[:,"RaceNo": RACENo]是NumPy多维数组的切片写法,既不符合Pandas新增列的语法规则,也无法实现固定值列填充的效果;另外提前将提取到的RaceNo转为Pandas Series属于多余操作,常量值可以直接赋值给整列。
  • 定义的URL字符串存在无意义换行,且保留了HTML转义字符&,实际发起请求时可能携带多余字符,存在URL参数解析失败的隐患。
修正后实现代码
import time
from bs4 import BeautifulSoup
import pandas as pd
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.service import Service

s = Service(executable_path=r'D:\Python3104\chromedriver.exe')
driver = Chrome(service=s)
driver.maximize_window()
# 移除URL内的多余换行和HTML转义字符,避免参数解析异常
url = "http://racing.hkjc.com/racing/information/Chinese/Reports/CORunning.aspx?Date=20220701&RaceNo=2"
driver.get(url)
time.sleep(3)

soup = BeautifulSoup(driver.page_source, "html.parser")
# 提取RaceNo时去除前后空白,可按需转为整数类型
race_no = driver.current_url.split("RaceNo=")[1].strip()

# 取read_html返回列表的第一个元素,即为目标表格对应的DataFrame
df = pd.read_html(str(soup.find("table", class_="table_bd f_fs13")))[0]

# 直接为整列赋值常量即可完成新列添加
df["RaceNo"] = race_no

# 操作完成后关闭浏览器实例
driver.quit()

代码运行后可通过print(df.head())查看前5行数据,确认RaceNo列已正确填充为URL中提取到的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:15:42