1
我试图将一堆CSV文件读入单个熊猫数据帧。一些CSV具有多个日期的数据。我只需要每个CSV中的日期等于每个文件修改日期的数据。熊猫读取CSV文件并基于文件过滤数据帧
这里是我当前的尝试:
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 = modification_date(allFiles)'而不是'filedate = modification_date(file_)'? –
哈,这是问题所在。感谢一双清新锐利的眼睛。 – 1Sepi21