使用Pandas将每个文件夹的所有csv文件合并为一个大csv文件

阿曼·辛格|

我有一个包含多个子目录和子子目录的目录。我的目标是读取所有csv文件,并将它们附加到每个子目录一个大的csv文件中(PS不是每个子子目录一个大的csv文件,而是每个子目录一个文件)。

以下是我一直用于将所有csv文件附加到1个大csv文件中的代码,但是此代码的唯一问题是最终的csv文件大约为890 MB,这在您尝试打开该文件时无法读取Microsoft Excel中的文件,因为它遇到“内存问题”。

dirName = 'FTP_Data/2019/'

allFilesList = list()
print('[info.] looking for .csv files.')
for (dirpath, dirnames, filenames) in os.walk(dirName):
    for file in filenames:
        if file.endswith('.csv'):
            allFilesList += [os.path.join(dirpath, file).replace('\\','/')]

print('[info.] combining all the .csv files.')
combined_csv = pd.concat([pd.read_csv(file, sort=True) for file in allFilesList])
print('[info.] exporitng to one final output file.')
combined_csv.to_csv('FinalOutputFrom2019.csv', index=False, encoding='utf-8')

上面的代码生成了一个大的csv文件,名为“ FinalOutputFrom2019.csv”。

现在,如果该目录下面的方式构成,我想它每月产生12个文件- ,2019-01.csv2019-02.csv2019-03.csv2019-04.csv2019-05.csv2019-06.csv2019-07.csv2019-08.csv2019-09.csv2019-10.csv2019-11.csv2019-12.csv

FTP_data
|-- 2019
    |-- 2019-01
        |-- 2019-01-01
            |-- foo.csv
            |-- bar.csv
            |-- foobar.xml
        |-- 2019-01-03
            |-- foobar.csv
        |-- ...
    |-- 2019-02
        |-- 2019-02-02
            |-- ...
        |-- 2019-02-03
            |-- ...
        |-- 2019-02-05
            |-- ...
    |-- ...
黄Huang

只需将您的工作片段适应整个月的循环。尝试这个:

设定

yr = 2019
dirName = f'FTP_Data/{yr}/'

def export_csv(dirName, csv_name):
    allFilesList = list()
    print('[info.] looking for .csv files.')
    for dirpath, dirnames, filenames in os.walk(dirName):
        for file in filenames:
            if file.endswith('.csv'):
                allFilesList.append(os.path.join(dirpath, file).replace('\\', '/'))

    print('[info.] combining all the .csv files.')
    combined_csv = pd.concat([pd.read_csv(file, sort=True) for file in allFilesList])
    print('[info.] exporting to one final output file.')
    combined_csv.to_csv(f'{csv_name}.csv', index=False, encoding='utf-8')

执行

for mon in range(1, 13):
    # yr = dirName.split("/")[1]
    csv_name = f"{yr}-{mon:02}"
    subdirName = f"{dirName}{csv_name}"
    export_csv(subdirName, csv_name)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将一个文本文件文件夹与一个单元格中的每个内容合并为一个CSV文件

使用pypdf2将文件夹中的所有pdf文件合并为一个pdf

如何使用命令 COPY 将文件夹中的所有 MP3 文件合并为一个 MP3 文件?

使用 Pandas 将三个单独的 CSV 文件中的特定元素合并为一个 CSV 文件

天蓝色数据工厂:如何将一个文件夹中的所有文件合并为一个文件

如何使用tcl将多个csv文件合并为一个csv文件

如何将所有 csv 文件合并为一个文件并将数据堆叠在原始标题下?

在每个子文件夹中将 2 个文本文件合并为一个,并将它们保存在名为 csv 文件的日期和文件所在的文件夹中。

从子文件夹递归地将文件读取到列表中,并将每个子文件夹的文件合并到每个子文件夹一个csv中

将多个csv文件合并为一个

将递归文件夹中的多个缩小的 javascript 文件合并为一个文件

将CSV文件合并为一个文件,没有重复的标题

将所有 .dta 文件合并到一个文件夹中?

将所有日志文件合并为一个

使用 gulp 将所有 scss 文件合并为一个 css 文件

脚本将 2 个文件合并为 1 个文件并重复,直到文件夹中的所有 500 个文件合并为 250 个文件

将文件夹目录中的所有.csv文件复制到python中的一个文件夹中

如何通过使用R将每个文件的数据添加为另一行,从而将不同的.csv文件合并为一个完整文件?

使用一个大JS之类的文件夹中的所有文件

将 2 个 CSV 文件合并为一个 CSV 文件

如何将文件夹中的不同csv文件合并为单个csv文件?

Python Pandas-将目录中的csv文件合并为一个

将多个CSV合并为一个,文件名作为Pandas中的列名

使用AWK将两个CSV文件合并为一个

将单列CSV文件合并为一个14列的CSV文件

将多个csv文件合并为一个csv文件

使用PowerShell将多个CSV文件合并为一个

使用Python将两行合并为一个csv文件

如何使用一个主键将不同的CSV文件合并为新的CSV文件