【问题标题】:How to create a dataframe with a for loop over years in csv如何在csv中创建一个带有for循环多年的数据框
【发布时间】:2019-11-05 05:03:57
【问题描述】:

我从 2015 年到 2019 年每个月和每年都有 csv 文件,我正在尝试将它们读入一个数据框并创建一个区分每年的年份变量,以便我最终可以合并它们。 csv 文件都以相同的方式命名(例如:name_monthyear:“name_0119.csv”和“name_0218.csv”)。

我通过创建年份文件夹 2019、2018 等并单独执行每个然后合并数据框,每年都成功地完成了这项工作,但我想知道什么可能更有效的代码,特别是使用循环.

path19 ="C:\\...\\2019"

all_files19 = glob.glob(path19+"/*.csv")

li19 = []

for filename in all_files19:
    df19 = pd.read_csv(filename, index_col = None, header = 0)
    li19.append(df19)

final19 = pd.concat(li19, axis = 0, ignore_index = True)
final19['year'] = 2019

我希望输出产生 5 个数据帧:final15、final16、final17 等,每个数据帧的年份变量等于 year = 2015 等。

【问题讨论】:

    标签: python loops csv dataframe


    【解决方案1】:

    您可以使用 os.walk() 同时完成所有 5 年:

    import os
    
    dataframes = []
    
    path = "C:\\..."
    for root, dirs, files in os.walk(path):
        year = os.path.basename(root)
        for file in files:
            if file.endswith(".csv"):
                 filename = "{}/{}".format(root,file)
                 df = pd.read_csv(filename,index_col=0,header=None)
                 df["year"] = year
                 dataframes.append(df)
    
    final = pd.concat(dataframes, axis=0, ignore_index=True)
    

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2021-12-08
      • 2022-01-26
      相关资源
      最近更新 更多