Объединить кадры данных в цикле for - PullRequest
0 голосов
/ 18 сентября 2018

Я написал класс для очистки данных о праздничных днях, но я хотел бы повторить свой класс на протяжении многих лет, например:

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 голосов
/ 18 сентября 2018

Вы можете создать список фреймов данных и продолжать добавлять новые фреймы данных для данных каждого года в этот список.Как только вы закончите очистку данных, вы можете объединить их в один фрейм данных следующим образом:

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 необходимо выделить память для нового фрейма данных и скопировать вседанные закончены, поэтому делать это несколько раз в цикле будет дорого.Делая это таким образом, вы экономите эти накладные расходы, поскольку вы будете делать это только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...