Извлечение файлов между двумя датами, которые были сохранены с датами - PullRequest
1 голос
/ 29 мая 2019

Я сохранил все ежедневные отчеты о продажах в общей папке.каждому файлу присваивается соответствующая дата.например: 01-01-2019-Sales.csv, 02-01-2019-Sales.csv и т. д. все файлы сохраняются в пути к папке «C: \ Desktop \ Sales».Теперь я хочу извлечь и объединить все файлы, которые находятся в период с 05-01-2019 по 04-02-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)

Но мой вопрос заключается в том, как мне извлечь файлы между 2 указанными конкретными датами, используя панд / python.(используя имена файлов, которые были сохранены с датой) например;извлекать только файлы в период с 05-01-2019 по 04-02-2019.

Ответы [ 4 ]

2 голосов
/ 29 мая 2019

Как насчет этого

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 в своем каталоге и выбираете только те, которые выбраны между выбранными датами.

1 голос
/ 29 мая 2019

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

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
0 голосов
/ 29 мая 2019

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

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
0 голосов
/ 29 мая 2019

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

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...