Python解决三维列表转DataFrame需传入二维输入的报错问题
报错原因
pd.read_html()的返回值是列表类型,会将网页内所有解析到的HTML表格按顺序存入列表,不会直接返回单个表格。当前爬取的页面仅包含1个国家代码目标表格,因此返回列表长度为1,整体结构为[目标二维表格],对应你看到的(1, 249, 4)形状。- 你代码中调用
np.reshape后没有将变形结果赋值给变量,变形操作未实际生效,后续传入pd.DataFrame的仍是原始三维结构,因此触发维度报错。
修复方案
无需额外使用numpy做维度转换,直接读取返回列表的第一个元素就是符合要求的二维表格,修正后可运行代码如下:
import pandas as pd # 读取页面所有表格,取索引为0的第一个元素即为目标国家代码表 all_tables = pd.read_html("https://www.iban.com/country-codes") df_countryCodes = all_tables[0] print(df_countryCodes)
结果说明
运行后得到的DataFrame和给出的样例结构完全匹配,包含4个字段:
- Country:国家名称
- Alpha-2 code:两位国家代码
- Alpha-3 code:三位国家代码
- Numeric:数字国家代码
后续使用
pd.read_html爬取包含多张表格的页面时,可先查看返回列表的长度,按索引提取对应目标表格即可,无需手动做reshape变形。
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

