聚合特定文件夹的未知 csv 文件

Aggregating the unknown csv files for a particular folder

我的文件夹中有一些 csv 文件。 water 文件夹有 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 月

您可以使用 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')}

现在有 2 种可能性:

使用 date 键作为索引前缀:

df = pd.concat(data)

没有前缀:

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