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

Pandas中droplevel报错、索引KeyError及表合并问题求助

Pandas问题解决方案

问题1:AttributeError: 'list' object has no attribute 'columns'

pd.read_html()返回的是DataFrame组成的列表,你直接对整个列表players调用.columns会报错。正确操作是先取出列表内的DataFrame再处理表头:

players = pd.read_html(data.text, match="Standard Stats")
# 提取列表中的第一个DataFrame
players_df = players[0]
# 移除多级表头的其中一级
players_df.columns = players_df.columns.droplevel()
# 查看处理后的表格
players_df

问题2:KeyError: 0

修改后的代码已经把列表里的第一个DataFrame赋值给了players,此时players是DataFrame对象,players[0]是尝试取列名为0的列,但你的表格中没有这个列名。直接查看整个DataFrame即可:

players = pd.read_html(StringIO(data.text), match="Standard Stats")[0]
# 直接查看完整表格
players
# 若要提取某一列,使用实际列名,例如players["Player"]

问题3:KeyError: 'Player'

这个错误说明players或shooting中至少有一个没有名为Player的列。按以下步骤排查解决:

  1. 先检查两个表的列名:
# 打印players的所有列名
print(players.columns.tolist())
# 打印shooting的所有列名
print(shooting.columns.tolist())
  1. 如果列名存在大小写、空格差异(比如player、Player),统一列名:
# 示例:将shooting中的"player"列名改为"Player"
shooting.rename(columns={"player": "Player"}, inplace=True)
  1. 如果两个表的关联列名不同,用left_on和right_on分别指定:
# 示例:players关联列是"Player",shooting关联列是"Player_Name"
team_data = players.merge(shooting[["Distance", "Player_Name"]], left_on="Player", right_on="Player_Name")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:43:28