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

使用pandas将爬取的网页表格拆分为航空公司、目的地独立列表

问题原因

pandas.read_html()返回的airlines[3]是DataFrame类型对象,直接对DataFrame执行for i in xxx循环时,默认迭代对象是列名(表头),不是表格里的行数据,所以循环只能拿到"Airlines"、"Destinations"两个表头字段,读不到实际存储的业务数据。

实现方案

不需要手写逐行循环做提取,pandas原生提供了列数据转Python列表的方法,代码更简洁运行效率更高:

import pandas as pd
airlines = pd.read_html('https://en.wikipedia.org/wiki/Tan_Son_Nhat_International_Airport')
target_df = airlines[3]

# 提取对应列数据,过滤空值后转为原生列表
airlines_list = target_df['Airlines'].dropna().tolist()
destination_list = target_df['Destinations'].dropna().tolist()

如果需要逐行遍历做数据清洗(比如去掉维基百科表格自带的[1][2]类引用脚注、多余空白字符),要使用DataFrame的iterrows()方法遍历行,不能直接遍历DataFrame本身:

airlines_list = []
destination_list = []

# 逐行遍历表格
for _, row in target_df.iterrows():
    # 跳过空行
    if pd.isna(row['Airlines']) or pd.isna(row['Destinations']):
        continue
    # 可自定义清洗逻辑
    clean_airline = row['Airlines'].strip()
    clean_dest = row['Destinations'].strip()
    airlines_list.append(clean_airline)
    destination_list.append(clean_dest)

注意:维基百科的表格经常会合并单元格、插入引用标记,提取后如果发现数据和预期不符,可以逐行打印row内容做针对性清洗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:24:24