seo需要會網(wǎng)站建設(shè)嗎web個人網(wǎng)站設(shè)計代碼
本文介紹基于Python語言,針對一個文件夾下大量的Excel表格文件,對其中的每一個文件加以操作——將其中指定的若干列的數(shù)據(jù)部分都向上移動一行,并將所有操作完畢的Excel表格文件中的數(shù)據(jù)加以合并,生成一個新的Excel文件的方法。
??
首先,我們明確一下本文的需求。在一個文件夾內(nèi),有大量的Excel表格文件(以.csv
格式文件為例),其中每一個文件都有著類似如下圖所示的數(shù)據(jù)特征;我們希望,對于下圖中紫色框內(nèi)的列,其中的數(shù)據(jù)部分(每一列都有一個列名,這個列名不算數(shù)據(jù)部分)都向上提升一行(比如原本數(shù)據(jù)部分的第2
行變到第1
行,原本第3
行變到第2
行,以此類推)。
由上圖也可以看到,需要加以數(shù)據(jù)操作的列,有的在原本數(shù)據(jù)部分的第1
行就沒有數(shù)據(jù),而有的在原本的數(shù)據(jù)部分中第1
行也有數(shù)據(jù);對于后者,我們在數(shù)據(jù)向上提升一行之后,相當(dāng)于原本第1
行的數(shù)據(jù)就被覆蓋掉了。此外,很顯然在每一個文件的操作結(jié)束后,加以處理的列的數(shù)據(jù)部分的最后一行肯定是沒有數(shù)據(jù)的,因此在合并全部操作后的文件之前,還希望將每一個操作后文件的最后一行刪除。
??
知道了需求,我們就可以開始代碼的撰寫;具體代碼如下。
# -*- coding: utf-8 -*-
"""
Created on Fri May 19 01:47:06 2023@author: fkxxgis
"""import os
import pandas as pdoriginal_path = "E:/01_Reflectivity/25_2022Data_New"
result_path = "E:/01_Reflectivity/99_Model/02_Extract_Data/26_Train_Model_New"result_df = pd.DataFrame()for file in os.listdir(original_path):if file.endswith(".csv"):df = pd.read_csv(os.path.join(original_path, file))columns_move_index = list(range(8, 16)) + list(range(17, 36))for columns_index in columns_move_index:for i in range(len(df) - 1):df.iat[i, columns_index] = df.iat[i + 1, columns_index]if len(df):df = df.drop(len(df) - 1)# df = df.iloc[ : , 1 : ]result_df = pd.concat([result_df, df])result_df.to_csv(os.path.join(result_path, "Train_Model_0715_Main.csv"), index = False)
其中,original_path
表示存放有多個待處理的Excel表格文件的文件夾路徑,result_path
則是結(jié)果Excel表格文件的存放路徑。
??
首先,我們通過result_df = pd.DataFrame()
創(chuàng)建一個空的DataFrame,用于保存處理后的數(shù)據(jù)。接下來,遍歷原始文件夾中的所有文件,并找到文件夾內(nèi)以.csv
結(jié)尾的文件;隨后,讀取這些.csv
文件,并將其保存到df
中。
??
其次,我們通過columns_move_index = list(range(8, 16)) + list(range(17, 36))
指定需要移動數(shù)據(jù)的列的索引范圍,并隨后遍歷需要移動數(shù)據(jù)的列。接下來的df.iat[i, columns_index] = df.iat[i + 1, columns_index]
表示將當(dāng)前行的數(shù)據(jù)替換為下一行對應(yīng)的數(shù)據(jù)。
??
接下來,我們通過if len(df):
判斷是否DataFrame不為空,如果是的話就刪除DataFrame中的最后一行數(shù)據(jù);隨后,將處理后的DataFrame連接到result_df
中。
??
最后,我們通過result_df.to_csv()
函數(shù),將最終處理后的DataFrame保存為一個新的Excel表格文件,從而完成我們的需求。
??
至此,大功告成。
文章轉(zhuǎn)載自:瘋狂學(xué)習(xí)GIS
原文鏈接:https://www.cnblogs.com/fkxxgis/p/18404400
體驗地址:引邁 - JNPF快速開發(fā)平臺_低代碼開發(fā)平臺_零代碼開發(fā)平臺_流程設(shè)計器_表單引擎_工作流引擎_軟件架構(gòu)