导入不断增长的 csv 文件列表(),仅在 imoprting 后追加 [重复]

Posted

技术标签:

【中文标题】导入不断增长的 csv 文件列表(),仅在 imoprting 后追加 [重复]【英文标题】:Import a growing list() of csv files only to append after imoprting [duplicate] 【发布时间】:2019-11-03 20:47:03 【问题描述】:

所以我正在构建一个包含越来越多的 csv 的数据集。而不是添加新的df# = pd.read_csv(filename, index...),我宁愿创建一个函数来读取csv列表,然后在导入时附加它们。有什么建议吗?我将代码放在下面,以了解我目前拥有的内容。

import glob
files = glob.glob('*.csv')

files

alg1_2018_2019 = pd.read_csv('alg1_2018_2019.csv', index_col=False)
alg1_2017_2018 = pd.read_csv('alg1_2017_2018.csv', index_col=False)
geometry_2018_2019 = pd.read_csv('geometry_2018_2019.csv', index_col=False)
geom_8_2017_2018 = pd.read_csv('geom_8_2017_2018.csv', index_col=False)
alg2_2016_2017 = pd.read_csv('alg2_2016_2017.csv', index_col=False)
alg1_2016_2017 = pd.read_csv('alg1_2016_2017.csv', index_col=False)
geom_2016_2017 = pd.read_csv('geom_2016_2017.csv', index_col=False)
geom_2015_2016 = pd.read_csv('geom_2015_2016.csv', index_col=False)
alg2_2015_2016 = pd.read_csv('alg2_2015_2016.csv', index_col=False)
alg1_part2_2015_2016 = pd.read_csv('alg1_part2_2015_2016.csv', index_col=False)```

【问题讨论】:

【参考方案1】:

我正在使用以下功能:

import pandas as pd
from pathlib import Path

def glob_filemask(filemask):
    """
    allows to "glob" files using file masks with full path

    Usage:
        for file in glob_filemask("/path/to/file_*.txt"):
            # process file here
    or:
        files = list(glob_filemask("/path/to/file_*.txt"))


    :param filemask:    wildcards can be used only in the last part
                        (file name or extension), but NOT in the directory part
    :return:    Pathlib glob generator, for all matching files
    Example:
        glob_filemask("/root/subdir/data_*.csv") -
    will return a Pathlib glob generator for all matching files
        glob_filemask("/root/subdir/single_file.csv") -
    will return a Pathlib glob generator for a single file

    """
    p = Path(filemask)
    try:
        if p.is_file():
            return [p]
    except OSError:
        return p.parent.glob(p.name)

用法:

df = pd.concat([pd.read_csv(f) for f in glob_filemask("/path/to/file_*.csv")],
               ignore_index=True)

【讨论】:

以上是关于导入不断增长的 csv 文件列表(),仅在 imoprting 后追加 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

对从 csv 文件导入的数组列表进行小计

SharePoint PowerShell 从CSV文件导入数据到列表

如何将带有 YYYYMMDD 列的 CSV 文件导入 ClickHouse 中的 DATE 列

Python 导入 csv 到列表

错误 #1054 - 尝试将 CSV 文件导入数据库时​​,字段列表中出现未知列

将 csv 作为整数列表导入