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

Pandas调用df出现行重复异常,数据行数从100变800求助

问题:爬取维基百科表格后DataFrame行数异常增多(100行→800行)

已确认执行for循环前所有数据正常,爬取的目标维基百科表格仅含100行数据,但最终生成的DataFrame行数变为800行。循环过程中输出的有效数据是100行,无法定位行数膨胀的原因。

问题代码

table1 = soup.find_all('table')[1]
print(table1)

table1_headers = table1.find_all('th')
print(table1_headers)

processed_t1h = [t1h_data.text.strip() for t1h_data in table1_headers]
processed_t1h

import pandas as pd

df = pd.DataFrame(columns = processed_t1h)
df

column_data = table1.find_all('tr')
column_data

for row in column_data[1:]:
    row_data = row.find_all('td')
    individual_row_data = [data.text.strip() for data in row_data]
    print(individual_row_data)
    
    length = len(df)
    finaldata = df.loc[length] = individual_row_data
    print(finaldata)

df

问题根源

核心问题出在两个地方:

  1. find_all('tr')抓取了无效行:维基百科的表格里存在嵌套的<tr>标签(比如合并单元格的隐藏行、引用标注行),column_data = table1.find_all('tr')会把所有层级的<tr>都提取出来,导致column_data[1:]的实际长度远大于100。
  2. df.loc[length]的索引逻辑缺陷:即使individual_row_data是空列表(无效行),df.loc[length]也会强制创建新行,填充NaN值。循环次数远多于有效数据行数,最终导致DataFrame行数膨胀到800。

解决方案

方案1:过滤有效数据行(修复原代码)

只保留列数与表头匹配的行,避免无效行插入:

table1 = soup.find_all('table')[1]
table1_headers = table1.find_all('th')
processed_t1h = [t1h_data.text.strip() for t1h_data in table1_headers]

import pandas as pd
df = pd.DataFrame(columns=processed_t1h)

column_data = table1.find_all('tr')
expected_col_num = len(processed_t1h)  # 有效数据行应包含的列数

for row in column_data[1:]:
    row_data = row.find_all('td')
    individual_row_data = [data.text.strip() for data in row_data]
    # 仅处理列数匹配的有效行
    if len(individual_row_data) == expected_col_num:
        df.loc[len(df)] = individual_row_data

print(df.shape)  # 输出应为(100, 列数)

方案2:用pandas直接读取HTML(更高效)

pandas自带read_html方法,能自动解析维基百科的表格结构,无需手动处理标签:

import pandas as pd

# 直接读取页面第2个表格(索引为1)
df = pd.read_html('https://en.wikipedia.org/wiki/List_of_largest_companies_in_the_United_States_by_revenue')[1]
print(df.shape)  # 输出(100, 7),符合实际行数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:27:31