使用Pandas读取HTML表格转Excel时,删首列遇“Can't drop None”错误
解决Pandas读取HTML表格转Excel后残留无名列的问题
嘿,我来帮你搞定这个麻烦!咱们先搞清楚问题出在哪儿:
你用read_html()读取HTML表格时,原表格里的索引列被Pandas当成了普通数据列,而且因为这列没有表头,Pandas自动给它起了个Unnamed: 0的名字。你后来用index=False没用,是因为这个Unnamed: 0是实际存在的列,不是DataFrame的默认索引——index=False只是控制不导出Pandas自动生成的那个行索引,对这个手动生成的无名列无效。至于drop()报错“Can't drop None”,大概率是你调用时没指定正确的列名或者参数格式不对~
下面给你两种靠谱的解决方法,选哪种都行:
方法一:读取时直接把第一列设为索引
在调用read_html()的时候,直接指定index_col=0,让Pandas把原表格的第一列识别成索引,这样就不会生成Unnamed: 0列了:
import pandas as pd # 读取时指定第一列为索引 data = pd.read_html('你的HTML文件路径或链接', index_col=0) # 导出Excel,index=False表示不导出Pandas的索引列 writer = pd.ExcelWriter('example1.xlsx') data[0].to_excel(writer, sheet_name='Sheet1', index=False) writer.close()
方法二:读取后删除无名列
如果读取时没设索引,那就先确认列名,再删掉那个Unnamed: 0列:
import pandas as pd data = pd.read_html('你的HTML文件路径或链接') # 先打印列名,确认要删除的列名(避免列名不是Unnamed:0的情况) print(data[0].columns) # 删除指定列,axis=1表示按列删除 data[0] = data[0].drop('Unnamed: 0', axis=1) # 导出Excel writer = pd.ExcelWriter('example1.xlsx') data[0].to_excel(writer, sheet_name='Sheet1', index=False) writer.close()
注意哦,如果打印列名后发现不是Unnamed: 0,而是Unnamed: 0.1之类的,就把drop()里的列名改成对应的就行~
内容的提问来源于stack exchange,提问作者user6476414
相关产品推荐
相关产品推荐

