Python使用pandas读取HTML表格后无法删除冗余列,仅保留指定4列如何解决?
问题原因
- pandas 中
droplevel、filter等数据处理方法默认不会修改原DataFrame,只会返回处理后的新对象,你的代码没有将处理结果赋值给变量,原始df没有被改动,打印时自然还是完整表格。 - 你读取到的原始表格列是多层索引结构,
droplevel处理后的列索引也没有同步到原df上,就算后续直接筛选原df的列,也无法匹配到单层的列名。
修正代码
import pandas as pd import requests url = 'https://www.hockey-reference.com/leagues/NHL_2022_goalies.html' df_list = pd.read_html(url) df = df_list[0] # 将降层、筛选后的结果直接赋值给df,覆盖原始数据 df = df.droplevel(level=0, axis='columns').filter(['Rk', 'Player', 'SV%', 'QS%']) # 可选:过滤掉表格中重复插入的表头行,避免后续数据类型报错 df = df[df['Rk'] != 'Rk'].reset_index(drop=True) print(df)
补充说明
如果你不想改动原始的完整DataFrame,也可以将处理后的结果赋值给新变量,比如df_selected = df.droplevel(...).filter(...),后续使用df_selected做处理即可。
内容的提问来源于stack exchange,提问作者ffspider
相关产品推荐
相关产品推荐

