繁体   English   中英

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

[英]How to replace dataframe append with concat?

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

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

我需要做些什么来修改下面的代码片段以使用数据帧 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:\Users\My Name\AppData\Local\Temp\ipykernel_22060\394869253.py:11: FutureWarning: frame.append 方法已弃用,将在未来版本中从 pandas 中删除。 请改用 pandas.concat。
population_data = population_data.append({"Rank":rank, "Country":country, "Population":population, "Area":area, "Density":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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM