首页 > 解决方案 > 在for循环python中仅获取列表的最后一个元素

问题描述

我需要遍历多个文件夹才能获得最终需要添加到 df 的 csv 文件。在下面的代码中,只有最后一个文件夹的 csv 文件被添加到 df 中。你能告诉我为什么会发生这种情况以及如何解决吗?我是 python 新手,所以任何优化或改进代码的建议也将非常有帮助。

for x in os.listdir(path):
       for y in os.listdir(path+"\\" + x):
            if "FP" in y :     
                for z in os.listdir(path+"\\" + x + "\\" + y):
                    final_data = []
                    if "Frequency" in z:
                        columns =["frequency", "amplitude", "phase","axis","machinenumber","time"]
                        list_files = []
                        
                        for csv_files in os.listdir(path+"\\" + x + "\\" + y +"\\" + z):
                            old_path = (path+"\\" + x + "\\" + y +"\\" + z + "\\" + csv_files)
                            #print(csv_path)
                            df = pd.read_csv(old_path,header=None,names=columns)
                            df["axis"].fillna(str(csv_files.strip(".CSV")),inplace = True)
                            df["machinenumber"].fillna(str(x.split("_")[1]),inplace = True)
                            df["time"].fillna(str(y.split("-")[2]),inplace = True)
                            list_files.append(df)
                        final_data = pd.concat(list_files)
                        final_data.to_csv(r'C:\Users\subhvaru\Desktop\1234.csv',index= False)

标签: pythonlistdataframefor-loop

解决方案


你的最后一行重写了文件。您可以尝试附加到它,这样它就不会删除现有内容。

final_data.to_csv(r'C:\Users\subhvaru\Desktop\1234.csv', mode='a,index= False)

推荐阅读