通过python读取特定的csv文件(名称应满足条件)

gz5pxeao  于 2023-02-27  发布在  Python
关注(0)|答案(2)|浏览(155)

文件夹中有数百万个文件,每个文件名为year-month.csv
如何在一个 Dataframe 中读取特定年份的所有文件(比如2022年或范围 * year 1-year 2 *)?
对于如此大量的数据,最佳的数据结构是什么?
谢谢大家!

jogvjijk

jogvjijk1#

如果没有一个最小的工作示例,很难做到具体,但作为一个起点,您可以尝试以下内容:

import pandas as pd
import os

df_dict = {}

def load_csv(year, directory):
    
    # create a file list
    file_list = [x for x in os.listdir(path=directory) if x.endswith('.csv')]
    
    # iterate file names
    for i in file_list:
        # split file name
        y, m = i.split('.')[0].split('-')
        
        # if file name meets criterion create a new df add it to dict
        if y == str(year):
            df_dict[i] = pd.read_csv(directory + i)
    
    # concatenate all dfs, set axis to concatenate columns or rows
    df_year = pd.concat([df_dict[i] for i in df_dict], axis=0)
    
    return df_year

HDF5是非常适合大量数值数据的数据格式。幸运的是有一个package for python
如果您正在寻找panda的替代品来处理大型数据集,您可以尝试DaskVaex,它们具有类似API的panda。

sshcrbum

sshcrbum2#

使用dask和glob语法。
Glob语法将允许您过滤文件名,dask将允许您并行化/分布读取/加载。

相关问题