【问题标题】:Read multiple CSVs & merge those CSVs into separate files based on year in filename python读取多个 CSV,并根据文件名 python 中的年份将这些 CSV 合并到单独的文件中
【发布时间】:2020-09-16 02:07:00
【问题描述】:

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

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.csvdata1-format2-1991-1992.csv 结合,依此类推。

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

This question 让我了解了一些情况,因为 .format() 的使用方式。

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

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

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

    【讨论】:

    • 首先将所有内容读入一个数据帧,然后您可以执行类似的操作将其全部吐回多个文件中。
    • @papelr 这回答了你的问题吗?如果有,请采纳!
    【解决方案2】:
    years = [name.split('-')[-2:] for name in names]
    years = ['-'.join(y) for y in years]
    years = set(years) #unique years
    print(years)
    
    dataformat = [name.split('-')[:2] for name in names]
    dataformat = ['-'.join(df) for df in dataformat]
    print(dataformat)
    
    year_data = dict()
    for year in years:
        yragne=year.split('.')[0] 
        year_data[yragne] = pd.DataFrame([])
        for df in dataformat:
            try:
                gg = pd.read_csv(rootdir+'/'+df+'-'+year,header = None)
                print(gg)
                year_data[yragne] = year_data[yragne].append(pd.read_csv(rootdir+'/'+df+'-'+year,header = None),True)
            except:
                pass
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-14
      • 2021-10-24
      • 1970-01-01
      • 2021-05-12
      • 2020-09-06
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多