【问题标题】:Aggregating the unknown csv files for a particular folder聚合特定文件夹的未知 csv 文件
【发布时间】:2022-01-14 06:48:10
【问题描述】:

我在一个文件夹中有一些 csv 文件。 waterfolder 有water_202201.csvwater_202202.csvwater_202203.csv。我想聚合这3个文件。当然,我可以像下面的代码那样做。

import pandas as pd
import numpy as np
#-*-coding:utf-8-*-
dat1=pd.read_csv("C:/water/water_202201.csv")
dat2=pd.read_csv("C:/water/water_202202.csv")
dat3=pd.read_csv("C:/water/water_202202.csv")
frames=[data1,data2,data3]
result1=pd.concat(frames)
result1

但问题是如果我不知道water文件夹中有多少个csv文件并且我想以某种方式聚合该文件夹中的每个csv文件,如何聚合。 202201 表示 2022 年 1 月

【问题讨论】:

    标签: python pandas csv export-to-csv


    【解决方案1】:

    您可以使用pathlib 来遍历您的文件夹:

    import pathlib
    
    data = {}
    for file in pathlib.Path('C:/water').glob('water_*.csv'):
        date = file.stem.split('_')[-1]  # extract 202201 for water_202201.csv
        df = pd.read_csv(file)
        data[date] = df
    
    # One-line version
    data = {file.stem.split('_')[1]: pd.read_csv(file) 
               for file in pathlib.Path('./data/water').glob('water_*.csv')}
    

    现在有两种可能性:

    date 键为索引添加前缀:

    df = pd.concat(data)
    

    无前缀:

    df = pd.concat(data.values())
    

    【讨论】:

    • 我试过了,但只使用了该文件夹中最新的 csv 文件。
    • 所有文件名都不一样,对吧?
    • 请问len(data)data.keys()循环后的输出是什么?
    • 我误会了。您的代码有效!
    • 对不起,如果数据名称是 water_machine A_202201.csv 怎么办?如何更改date = file.stem.split('_')[1]
    猜你喜欢
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    相关资源
    最近更新 更多