Как создать фрейм данных с циклом for по годам в CSV - PullRequest
0 голосов
/ 22 июня 2019

У меня есть CSV-файлы для каждого месяца и года с 2015 по 2019 гг., И я пытаюсь прочитать их в одном кадре данных и создать переменную года, которая различает каждый год, чтобы я мог в конечном итоге объединить их. Все файлы csv имеют одинаковые имена (например, name_monthyear: name_0119.csv и name_0218.csv).

Я успешно делал это для каждого года самостоятельно, создав годовую папку 2019, 2018 и т. Д., Выполняя каждую по отдельности, а затем объединяя кадры данных, но мне интересно, что может быть более эффективным кодом, особенно с использованием цикла .

path19 ="C:\\...\\2019"

all_files19 = glob.glob(path19+"/*.csv")

li19 = []

for filename in all_files19:
    df19 = pd.read_csv(filename, index_col = None, header = 0)
    li19.append(df19)

final19 = pd.concat(li19, axis = 0, ignore_index = True)
final19['year'] = 2019

Я ожидаю, что в результате будет получено 5 кадров данных: final15, final16, final17 и т. Д., Каждый с переменной года, равной year = 2015 и т. Д.

1 Ответ

0 голосов
/ 22 июня 2019

Вы можете сделать все 5 лет одновременно с os.walk ():

import os

dataframes = []

path = "C:\\..."
for root, dirs, files in os.walk(path):
    year = os.path.basename(root)
    for file in files:
        if file.endswith(".csv"):
             filename = "{}/{}".format(root,file)
             df = pd.read_csv(filename,index_col=0,header=None)
             df["year"] = year
             dataframes.append(df)

final = pd.concat(dataframes, axis=0, ignore_index=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...