如何在csv中使用for循环创建数据框

时间:2019-06-22 20:07:37

标签: python loops csv dataframe

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

我通过创建year文件夹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,等等。

1 个答案:

答案 0 :(得分:0)

您可以同时使用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)