Отфильтровать по датам все CSV файлы из одной папки и сохранить отфильтрованные в другую папку

Как сделать, чтобы перебрать файлы из папки folder_1 в folder_2. В folder_1 есть CSV файлы, в которых по дате от меньшей к большей находятся значения.

Как обрезать лишние даты в файле и оставить только например с 2005.01.01 по 2014.10.01?

Это цель перебора, закинуть во вторую папку обрезанные файлы.

import pandas as pd
import pandas_datareader.data as wb

from pathlib import Path
import shutil

p = Path(r"D:/folder_1")
res = Path(r"D:/folder_2")

for f in p.glob("*.csv"):
    df = pd.read_csv(f)

Ответы (1 шт):

Автор решения: MaxU

Создайте функцию, которая будет читать CSV в DataFrame, фильтровать данные по датам и записывать результат в указанную директорию. После этого мы можем воспользоваться Path.glob("*.csv"), чтобы обработать этой функцией все файлы в исходной директории:

import pandas as pd
from pathlib import Path

src = Path.home() / "Downloads/DropMeFiles_jLSNp"
tgt = Path.home() / "Downloads/DropMeFiles_jLSNp/result"

def do_the_job(file, dt_from, dt_to, tgt_dir=tgt, **kwargs):
    df = pd.read_csv(file, **kwargs)
    df = df.query(f"@dt_from <= index <= @dt_to").dropna(how="all")
    if not df.empty:
        df.to_csv(tgt_dir / file.name)

_ = [do_the_job(f, "2005-01-01", "2014-10-01", 
                index_col=0, parse_dates=True) 
     for f in src.glob("*.csv")]
→ Ссылка