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

如何将Pandas DataFrame列名中的开赛时间整合为单独列

解决方案

你可以直接用pandas的melt方法完成宽表转长表,把分散在不同时间列的球队数据合并,代码如下:

import pandas as pd

# 你原有爬取数据的代码
dfs = pd.read_html("https://www.espn.com/nfl/lines")
df = pd.concat(dfs)

# 定义不需要转换的固定属性列
fixed_cols = ['REC (ATS)', 'LINE', 'OPEN', 'ML', 'FPI']
# 筛选出所有开赛时间列(列名包含AM/PM)
time_cols = [col for col in df.columns if 'AM' in col or 'PM' in col]

# 宽表转长表,生成开赛时间、球队名列
res_df = df.melt(
    id_vars=fixed_cols,
    value_vars=time_cols,
    var_name='开赛时间',
    value_name='球队名称'
)
# 过滤掉球队名称为空的无效行,重置索引
res_df = res_df.dropna(subset=['球队名称']).reset_index(drop=True)

# 可选:调整列顺序,把开赛时间和球队名称放到最前面
res_df = res_df[['开赛时间', '球队名称'] + fixed_cols]

执行完上述代码后res_df就是你需要的结构,每行对应一支球队,包含所属开赛时间和对应的所有赛事数据。
如果后续需要把同一场比赛的两支球队合并为一行展示,只需按开赛时间分组,奇偶行合并即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:27:03