首页 > 解决方案 > 读取多个 CSV 并根据文件名 python 中的年份将这些 CSV 合并到单独的文件中

问题描述

假设我有以下数据集已成功读入我的笔记本:

data1-format1-1991-1992.csv
data2-format1-1993-1994.csv
data3-format1-1995-1996.csv

data4-format2-1991-1992.csv
data5-format2-1993-1994.csv
data6-format2-1995-1996.csv

我可以轻松地从它们自己的目录中读取这些集合,如下所示:

files1 = [filename for filename in os.listdir(master_dir_1) if filename.startswith("data-")] # would do same for second set of files, in master_dir_2

for filename in files1:
    df = pd.read_csv(filename)
    print(df)

这会将它们打印在一帧中 - 但我需要将它们读入,然后pd.merge()根据文件名中的年份每个单独的文件。例如,data1-format1-1991-1992.csv与 连接data1-format2-1991-1992.csv,等等。

该过程将使用上面的循环从它们自己的目录中读取两组,然后有另一个循环根据文件名中的匹配年份进行组合和保存(我认为)。如何根据年份拆分,并分别保存每个加入的文件,年份在保存的 csv 名称中?我有读取单个数据集和加入/保存的过程,但没有用于多个读取、连接和保存的过程。

这个问题让我了解了一些情况,因为它是如何.format()利用的。

标签: pythonpandascsv

解决方案


您可以尝试使用 for 循环.groupby

for year, x in df.groupby(['Year']):
    x.to_csv(f'data1-format1-{year}.csv', index=False)

推荐阅读