【问题标题】:Pandas Load Latest Date Folder/CSV Files into DataframePandas 将最新日期文件夹/CSV 文件加载到数据框中
【发布时间】:2020-09-03 20:39:28
【问题描述】:

我有一个包含多个日期文件夹的 zip 文件,在每个文件夹中,我有一个包含日期和多个 csv 文件的 datestamp.txt。

例如:

在 Archives.zip 中: \文件夹1 \文件夹2

在每个文件夹中:

DATESTAMP.txt

a.csv

b.csv

所以我从上游下载了这个包含多天数据的 zip 文件,日期信息包含在 datestamp.txt 文件中(只是一个像 20200903 这样的日期戳),我怎样才能处理最新的日期 csv 文件? (Folder1/datestamp.txt: 20200903,Folder2/datestamp.txt: 20200904,所以我只想拥有Folder2的csv文件)

我尝试先从 txt 文件中读取日期并对其进行排序。

from zipfile import ZipFile

zip_file = ZipFile('data\Archives.zip')

timestamp={text_file.filename: pd.read_csv(zip_file.open(text_file.filename),header=None)
       for text_file in zip_file.infolist() if text_file.filename.endswith('.txt')}

dfs = {text_file.filename: pd.read_csv(zip_file.open(text_file.filename))
       for text_file in zip_file.infolist() if text_file.filename.endswith('.csv')}

有没有办法直接从 datestamp.txt 中获取日期,然后只读取最新的 a.csv 和 b.csv?

谢谢

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这是一种查找最新日期和相应文件夹的方法。我使用 defaultdict 来显示是否有多个文件夹具有最新日期。

    from collections import defaultdict
    
    # create test data
    metadata = [
        'Folder1/datestamp.txt: 20200903', # Sept 3
        'Folder2/datestamp.txt: 20200904',
        'Folder2/datestamp.txt: 20200903', # Sept 3 also (impossible?)
         ]
    
    # initial value is empty list; just append without checking first
    latest = defaultdict(list)
    
    for m in metadata:
        folder = m.split('/', 1)[0]
        datestamp = m.rsplit(' ', 1)[-1]
        latest[datestamp].append(folder)
        
    print('max date  :', max(latest))
    print('folder(s) :', latest[max(latest)])
    
    max date  : 20200904
    folder(s) : ['Folder2']
    

    【讨论】:

    • 导入集合 d={} for k,v in timestamp.items(): for col in v.columns: d[k]=col folder = str(sorted(d.items(), key=lambda x: x[1], reverse=True)[0]) folder_name=str(folder.split('/')[1:-1]) print (folder_name)
    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 2021-10-01
    • 2018-05-05
    • 2019-02-16
    • 2022-08-12
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多