Отфильтровать по датам все 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")]