Я пытаюсь прочитать кучу CSV-файлов в единый кадр данных pandas. Некоторые из CSV имеют данные для нескольких дат. Я хочу только данные из каждого CSV, у которого есть дата, равная дате изменения каждого файла.Pandas чтение CSV и фильтрация данных на основе filedate
Вот моя текущая попытка:
import os
import datetime
import pandas as pd
from pandas import Series, DataFrame
import glob as glob
path =r'C:xxx'
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
def modification_date(filename):
t = os.path.getmtime(filename)
return datetime.datetime.fromtimestamp(t).strftime('%Y-%m-%d')
list_ = []
for file_ in allFiles:
df = pd.read_csv(file_,index_col=None, header=0)
df["DATE"] = pd.to_datetime(df["DATE"], format='%Y-%m-%d')
filedate = modification_date(allFiles)
df = df[(df["DATE"] == filedate)]
list_.append(df)
frame = pd.concat(list_)
frame.reset_index(inplace=True, drop=True)
Это не удается, поскольку цикл здесь создает список дат модификации (поскольку папка содержит много CSV), что функция modification_date не может справиться. Ошибка: «TypeError: принуждение к Unicode: нужна строка или буфер, список найден»
Я пытаюсь обернуть голову, как изменить это, чтобы каждый CSV оценивался отдельно, но, похоже, далеко не так.
Почему вы делаете 'filedate = modify_date (allFiles)' вместо 'filedate = modify_date (file_)'? –
Ха, это была проблема. Спасибо за свежую/острую пару глаз. – 1Sepi21