首页 > 解决方案 > 在 for 循环中连接数据帧

问题描述

我写了一个类来抓取公共假期数据,但我想用很多年来迭代我的类,比如:

outputt_path = "C:/Users/N000193384/Downloads/countries/"
recent_years = ["2015", "2016", "2017", "2018"]
for year in recent_years : 
    PBC = Event_Scraper("italy", year, outputt_path)
    df = PBC._read_html_()
    df = df.append(df)

我的班级取了国家的名字和年份, outputt_path 在那里没用。

_read_html_() 构建一个干净的数据框,我想附加每个数据框。

这是一年的数据框示例:

    Date    Holiday Name    Holiday Type
0   2018-01-01  New Year's Day  National holiday
1   2018-01-06  Epiphany    National holiday
2   2018-03-20  March Equinox   Season
3   2018-03-30  Good Friday Observance
4   2018-04-01  Easter Day  National holiday

标签: pythonpandas

解决方案


您可以创建数据框列表,并继续将每年数据的新数据框添加到该列表中。完成数据抓取后,您可以将它们连接到一个数据帧中,如下所示:

dfs = []
for year in recent_years : 
    PBC = Event_Scraper("italy", year, outputt_path)
    df = PBC._read_html_()
    dfs.append(df)

final_df = pd.concat(dfs)

在数据帧上追加或执行 concat 是一项昂贵的操作,因为 Pandas 需要为新数据帧分配内存并复制所有数据,因此在循环中多次执行此操作会很昂贵。这样做可以节省开销,因为您只会这样做一次。


推荐阅读