在for循环中串联数据帧

时间:2018-09-18 09:26:02

标签: python pandas

我写了一堂课来抓取公众假期的数据,但是我想像这样多年重复我的课:

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

1 个答案:

答案 0 :(得分:2)

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

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)

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