Python - как создать словарь с большим количеством информационных фреймов, используя glob.glob - PullRequest
0 голосов
/ 18 октября 2019

Я создал словарь, который содержит несколько фреймов данных, используя следующий код

files = ('auction_aggregated_curves_germany_austria_20100101.csv', 'auction_aggregated_curves_germany_austria_20100102.csv', 'auction_aggregated_curves_germany_austria_20100103.csv', 'auction_aggregated_curves_germany_austria_20100104.csv', 'auction_aggregated_curves_germany_austria_20100105.csv')

dfs = ('df1', 'df2', 'df3', 'df4', 'df5')

list_of_dfs = {}
for df, file in zip(dfs, files):
       list_of_dfs[df] = pd.read_csv(file, skiprows=1)

Однако мне интересно, есть ли более простой способ автоматизации процесса с использованием glob.iglob для вызова группы cvs? файлы, которые отличаются только последним номером, который указывает дату в году, месяце и дне. У меня более 365 файлов, и было бы очень полезно, если бы кто-нибудь помог мне избежать записи всех имен файлов.

Заранее спасибо.

1 Ответ

0 голосов
/ 18 октября 2019

Для этого вы можете использовать модуль pathlib . Он включает метод glob.

from pathlib import Path

dataframes = {}

csv_root = Path(".")

for csv_path in csv_root.glob("*.csv"):
    key = csv_path.stem  # the filename without the ".csv" extension
    dataframes[key] = pd.read_csv(csv_path)

При использовании этого кода с данными вашего примера, диктат dataframes будет выглядеть следующим образом:

dataframes == {
    "auction_aggregated_curves_germany_austria_20100101": <DataFrame(...)>,
    "auction_aggregated_curves_germany_austria_20100102": <DataFrame(...)>,
    # etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...