如何用concat替换数据帧追加?



我一直在做一个在线课程,其中包括以下web抓取代码片段。当我在课程的Jupyter笔记本环境中运行它时,它没有出现任何错误。

但是当我自己运行它时,我得到一个警告,要求使用concat而不是对数据帧追加。

我需要做些什么来修改下面的代码片段以使用数据框架连接?我已经查找了这个问题的其他一些例子,并尝试了各种方法来修改代码,但我似乎就是不能让它工作。

population_data = pd.DataFrame(columns=["Rank", "Country", "Population", "Area", "Density"])
for row in tables[table_index].tbody.find_all("tr"):
col = row.find_all("td")
if (col != []):
rank = col[0].text
country = col[1].text
population = col[2].text.strip()
area = col[3].text.strip()
density = col[4].text.strip()
population_data = population_data.append({"Rank":rank, "Country":country, "Population":population, "Area":area, "Density":density}, ignore_index=True)
population_data

警告如下:

C: 我的名字 AppData 用户本地 Temp ipykernel_22060 394869253. py: 11:FutureWarning:框架。Append方法已弃用,并将被禁用在以后的版本中将从pandas中删除。使用熊猫。concat代替。
population_data = population_data.append({" rank ":排名;country ":国家;population ":人口;area ":面积;"Density"密度},ignore_index = True)

这是我替换它的解决方案。我还清理了变量初始化,使其更整洁。

cols = ["Rank", "Country", "Population", "Area", "Density"]
population_data = pd.DataFrame(columns=cols)
for row in tables[table_index].tbody.find_all("tr"):
col = row.find_all("td")
if (col != []):
rank, country, population, area, density =
col[0].text, col[1].text, col[2].text.strip(),
col[3].text.strip(), col[4].text.strip()
new_entry_df = pd.DataFrame(np.array([rank,country,population,area,density]),
columns=cols)
population_data = pd.concat([population_data, new_entry_df], axis=0)
population_data.tail(3)

最新更新