pandas read_html 方法中的bug?

1 投票
1 回答
865 浏览
提问于 2025-04-18 06:48

我觉得pandas里的read_html方法在处理 rowspan(跨行)和 colspan(跨列)的时候有问题。

举个例子:

html_table = io.StringIO(u'''<table>
    <thead>
        <tr>
            <th rowspan="2">Time</th>
            <th rowspan="2">Temp</th>
            <th colspan="3">Cloud Cover</th>
        </tr>
        <tr>
            <th>Low</th>
            <th>Middle</th>
            <th>High</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>22:00</td>
            <td>12C</td>
            <td>Lorem</td>
            <td>Ipsum</td>
            <td>Dolor</td>
        </tr>
    </tbody>
</table>''')

用pd.read_html(html_table)得到的结果是

[                 Time Temp Cloud Cover    Low Middle  High
 0 2014-05-16 22:00:00  12C       Lorem  Ipsum  Dolor   NaN

 [1 rows x 6 columns]]

这是个bug,还是我操作错了呢?

1 个回答

0

pandas 版本大于等于 0.24.0 的时候,可以理解 colspanrowspan 这两个属性。根据发布说明

result = pd.read_html("""
    <table>
      <thead>
        <tr>
          <th>A</th><th>B</th><th>C</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td colspan="2">1</td><td>2</td>
        </tr>
      </tbody>
    </table>""")

result

输出结果:

[   A  B  C
 0  1  1  2

之前的版本会返回以下内容:

[   A  B   C
 0  1  2 NaN]

撰写回答