Загружать файлы с диапазоном дат только из командной строки pandas фрейм данных - PullRequest
0 голосов
/ 28 мая 2020

У меня есть имена файлов с датой, я хотел бы получить диапазон файлов из каталога и поместить их в pandas фрейм данных, НЕ ХОТИТЕ ЗАГРУЗИТЬ ВСЕ ФАЙЛЫ

020-03-01.csv   2020-03-23.csv  2020-04-14.csv  2020-05-06.csv
2020-03-02.csv  2020-03-24.csv  2020-04-15.csv  2020-05-07.csv
2020-03-03.csv  2020-03-25.csv  2020-04-16.csv  2020-05-08.csv
2020-03-04.csv  2020-03-26.csv  2020-04-17.csv  2020-05-10.csv
2020-03-05.csv  2020-03-27.csv  2020-04-19.csv  2020-05-11.csv
2020-03-06.csv  2020-03-29.csv  2020-04-20.csv  2020-05-12.csv
2020-03-08.csv  2020-03-30.csv  2020-04-21.csv  2020-05-13.csv
2020-03-09.csv  2020-03-31.csv  2020-04-22.csv  2020-05-14.csv
2020-03-10.csv  2020-04-01.csv  2020-04-23.csv  2020-05-15.csv
2020-03-11.csv

Я бы хотел бы получить только файл, который находится в диапазоне, заданном как дата начала и дата окончания, и принять дату начала как sys.argv[1] и дату окончания sys.argv[2], то есть nameofthescript 2020-03-01 2020-03-20

1 Ответ

0 голосов
/ 28 мая 2020

Предполагается, что у вас есть сценарий в том же каталоге, что и ваши файлы CSV (и все файлы CSV имеют тот же формат XXXX-MM-DD.csv, где даты монотонно увеличиваются) и что вы сделали исполняемый файл сценария с (chmod +x script.py ) должно работать следующее script.py:

#!/usr/bin/env python3

import os
import sys
import pandas as pd

filepath = "/path/to/csvfiles/" #[TODO] change to the path where the csv files are located.

try:
    first_file = sys.argv[1]
    second_file = sys.argv[2]
except:
    print("An error occurred. Enter two file names separated by a space in the format of YYYY-MM-D1 YYYY-MM-D2")
    sys.exit(1)

csv_files = [csv_file for csv_file in os.listdir(filepath) if csv_file.endswith('.csv')]
ordered_files = sorted(csv_files)

try:
    index_first_file = ordered_files.index(first_file)
    index_second_file = ordered_files.index(second_file)
except:
     print("One of the csv files was not found in the current directory.")
     sys.exit(1)

df_list = [pd.read_csv(ordered_files[i]) for i in range(index_first_file, index_second_file+1)]

print(df_list)

Чтобы использовать его, просто запустите, например, ./script.py 2020-03-01.csv 2020-03-02.csv

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