不使用Beautifulsoup读取HTML
根据我之前的问题:最佳网页解析方法
我找到了一个不错的解决方案,但假设我在给经济方向的学生讲解这一部分,他们对网页解析了解不多,所以我决定直接使用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