如何将新文件添加到数据框

问题描述

我有一个存储 CSV 文件文件夹,每隔一定时间就会将一个新的 CSV 文件(相同格式)添加到该文件夹​​中。

我需要检测新文件并将内容添加到数据框中。

我当前的代码一次读取所有 CSV 文件并存储在 dataframe 中,但是当将新文件 (CSV) 添加文件夹时,Dataframe 应该使用新 CSV 的内容进行更新。

import os
import glob
import pandas as pd
os.chdir(r"C:\Users\XXXX\CSVFILES")

extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

#combine all files in the list
df = pd.concat([pd.read_csv(f) for f in all_filenames ])

解决方法

假设您有一个路径进入下载新 csv 的文件夹:

path_csv = r"C:\........\csv_folder"

我假设您的数据框(您要附加到的数据框)已创建并将其加载到您的脚本中(您之前可能已更新它,保存到另一个文件夹中的某个 csv)。假设您这样做:

path_saved_df = r"C:/..../saved_csv"   #The path to which you've saved the previously read csv:s
filename = "my_old_files.csv"
df_old = pd.read_csv(path + '/' +filename,sep="<your separator>")  #e.g. sep =";"

然后,要仅读取 csv 文件夹中最新添加的 path,您只需执行以下操作:

list_of_csv = glob.glob(path_csv + "\\\\*.csv")
latest_csv = max(list_of_csv,key=os.path.getctime)   #max ensures you only read the latest file

with open(latest_csv) as csv_file:
    csv_reader = csv.reader(csv_file,delimiter=';')
    
new_file = pd.read_csv(latest_csv,sep="<your separator>",encoding ="iso-8859-1") #change encoding if you need to

然后你的新数据框是

New_df = pd.concat([df_old,new_file])