如何在cs中创建具有多年for循环的数据帧

2024-10-01 07:28:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有从2015年到2019年的每月和每年的csv文件,我正试图将它们读入一个数据框,并创建一个区分每年的年份变量,以便最终合并它们。csv文件都以相同的方式命名(例如:name\u monthyear:“name\u 0119.csv”和“name\u 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的year变量,等等


Tags: 文件csv数据name文件夹allfilenameyear
1条回答
网友
1楼 · 发布于 2024-10-01 07:28:16

你可以用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)

相关问题 更多 >