Извлечение файлов между двумя датами, которые были сохранены с датами

Я сохранил все ежедневные отчеты о продажах в общей папке. каждый файл назван с соответствующей датой. например: 01-01-2019-Sales.csv, 02-01-2019-Sales.csv и т. д. все файлы сохраняются в пути к папке «C:\Desktop\Sales». теперь я хочу извлечь и объединить все файлы с 01.05.2019 по 02.04.2019.

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

import pandas as pd
import glob
import os

file_path = r'C:\Desktop\Sales'
all_files = glob.glob(os.path.join(file_path,'*.csv'))
df = pd.concat([pd.read_csv(f) for f in all_files], sort=False)

Но мой вопрос в том, как я могу извлечь файлы между двумя заданными датами, используя pandas/python. (используя имена файлов, которые были сохранены с датой) например ; извлечь только файлы с 01.05.2019 по 02.04.2019.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
115
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Что насчет этого

start_date = "05-01-2019"
end_date = "04-02-2019"

all_csv_files = [x for x in os.listdir(file_path) if x.endswith('.csv')]
correct_date_files = [x for x in all_csv_files 
                      if x >= start_date + "-Sales.csv" and x <= end_date + "-Sales.csv"]
df = pd.concat([pd.read_csv(f) for f in correct_date_files], sort=False)

По сути, вы просто перечисляете все файлы .csv в своем каталоге и берете только те, которые находятся между выбранными датами.

Я думаю, что этот кусок кода поможет вам

import datetime

d1 = datetime.date(2019,1,1)
d2 = datetime.date(2019,2,1)

d3 = datetime.date(2019,1,20)
d4 = datetime.date(2019,2,20)

print(d1<d3<d2)
# True
print(d1<d4<d2)
# False

Используйте даты для сравнения:

import pandas as pd
import glob
import os
from time import strptime

file_path = r'C:\Desktop\Sales'
all_files = glob.glob(os.path.join(file_path,'*.csv'))
start_date = strptime('04-02-2019', '%m-%d-%Y')
end_date = strptime('05-01-2019', '%m-%d-%Y')
df = pd.concat([pd.read_csv(f) for f in all_files
                if start_date < strptime(f, '%d-%m-%Y.csv') < end_date],
               sort=False)
Ответ принят как подходящий

Даты можно сравнивать лексически с изменением на гггг-мм-дд.

L = [ '01-01-2019-Sales.csv', '02-01-2019-Sales.csv']
>>> start = '2018-12-01'
>>> end = '2019-02-01'

>>> for file in L:
    m, d, yr = file.split('-')[:3]
    date = '-'.join([yr, m, d])
    if start <= date <= end:
        print(file)


01-01-2019-Sales.csv
02-01-2019-Sales.csv

Другие вопросы по теме