不使用Beautifulsoup读取HTML

0 投票
1 回答
22 浏览
提问于 2025-04-14 16:45

根据我之前的问题:最佳网页解析方法

我找到了一个不错的解决方案,但假设我在给经济方向的学生讲解这一部分,他们对网页解析了解不多,所以我决定直接使用read_html,并得到了以下结果:

data =pd.DataFrame(pd.read_html("https://www.geostat.ge/ka/modules/categories/26/samomkhmareblo-fasebis-indeksi-inflatsia",encoding='utf-8')[0])
# data.drop(0,axis=0,inplace=True)
# data =data.droplevel(level=0,axis=1)
print(data)


                                        0       1   ...      11      12
0                                        NaN  2012.0  ...  2022.0  2023.0
1  საშუალო წლიური წინა წლის საშუალო წლიურთან    99.1  ...   111.9   102.5
2            დეკემბერი წინა წლის დეკემბერთან    98.6  ...   109.8   100.4

你可以看到在年份的上面还有一个额外的层级,我该如何处理这种情况呢?

1 个回答

1

试试这个:

import pandas as pd

data = pd.DataFrame(
    pd.read_html(
        "https://www.geostat.ge/ka/modules/categories/26/samomkhmareblo-fasebis-indeksi-inflatsia",
        encoding="utf-8",
    )[0]
)

header = data.loc[[0], :]  # first row of the dataframe will be the new header
data = data.loc[1:, :]  # the rest will be new data

data.columns = ["", *header.loc[0, 1:].astype(int)]  # rename columns (first column will be empty string, the rest integers (years))

print(data)

输出结果是:

                                              2012   2013   2014   2015   2016   2017   2018   2019   2020   2021   2022   2023
1  საშუალო წლიური წინა წლის საშუალო წლიურთან  99.1   99.5  103.1  104.0  102.1  106.0  102.6  104.9  105.2  109.6  111.9  102.5
2            დეკემბერი წინა წლის დეკემბერთან  98.6  102.4  102.0  104.9  101.8  106.7  101.5  107.0  102.4  113.9  109.8  100.4

撰写回答