通过时间温度范围使用 python 导入 csv



我在一个地方有大约 100 个 csv 文件(目前,明天会更多(,每天更新 24-40 个新文件。那么,仅从过去一天导入文件的最佳方法是什么,但除此之外,我需要输入文件名的另一种方式:

data = pd.read_csv('/data/testingfile-PM_18707-2017_06_14-05_03_23__382.csv', delimiter = ';', low_memory=False)
data1 = pd.read_csv('/data/testingfile--PM_18707-2017_06_14-06_30_56__131.csv', delimiter = ';', low_memory=False)

是否可以编写一些时间戳识别函数?

from datetime import time
from datetime import date
from datetime import datetime
import fnmatch
def get_local_file(date, hour, path='data/'):
        """Get date+hour processing file from local drive
       :param date: str Processing date
        :param hour: str Processing hour
        :param path: str Path to file location
        :return: Pandas DF Retrieved DataFrame
        """
hour = [time(i).strftime(%H) for i in range(24)]
sdate = date.replace('-', '_') + "-" + str(hour)
for p_file in os.listdir(path):
        if fnmatch.fnmatch(p_file, 'testingfile-PM*'+sdate+'*.csv'):
            return pd.read_csv(path+p_file, delimiter=';')

我找到了这样的东西,但我无法让它工作。

如果您正在寻找一种从csv文件名中提取日期的方法,那么请查看python的datetime模块(或strptime方法,准确地说(。它允许您将字符串解析为日期时间,如下所示:

from datetime import datetime
name = "data/testingfile-PM_18707-2017_06_14-05_03_23__382.csv"
datepart = name.strip("data/testingfile-PM_18707-").split("__")[0] #quick and dirty parsing method that satisfies the given two examples. 
date = datetime.strptime(datepart,"%Y_%m_%d-%H_%M_%S")
print(datepart)
print(date)
2017_06_14-05_03_23
2017-06-14 05:03:23

因此,如果您想有选择地只打开 1 天前的 csvs,您可以执行以下操作:

import glob
from datetime import datetime
now = datetime.now()
for csv in glob.glob("data/*.csv"):
    datepart = csv.strip("data/testingfile-PM_18707-").split("__")[0]
    date = datetime.strptime(datepart, "%Y_%m_%d-%H_%M_%S")
    if (now - date).total_seconds() < 3600*24:
        pd.read_csv(csv)
    else:
        print("Too old to care!")

请注意,这与熊猫本身无关。

最新更新