多次複製Excel符合要求的資料行:Python批次實現

疯狂学习GIS發表於2024-04-08

  本文介紹基於Python語言,讀取Excel表格檔案資料,並基於其中某一列資料的值,將這一資料處於指定範圍那一行加以複製,並將所得結果儲存為新的Excel表格檔案的方法。

  首先,我們來明確一下本文的具體需求。現有一個Excel表格檔案,在本文中我們就以.csv格式的檔案為例;其中,如下圖所示,這一檔案中有一列(也就是inf_dif這一列)資料比較關鍵,我們希望對這一列資料加以處理——對於每一行,如果這一行的這一列資料的值在指定的範圍內,那麼就將這一行復制一下(相當於新生成一個和當前行一摸一樣資料的新行)。

  知道了需求,我們就可以開始程式碼的書寫。其中,本文用到的具體程式碼如下所示。

# -*- coding: utf-8 -*-
"""
Created on Thu Jul  6 22:04:48 2023

@author: fkxxgis
"""

import pandas as pd

df = pd.read_csv(r"E:\Train_Model.csv")

result_df = pd.DataFrame()
for index, row in df.iterrows():
    value = row["inf_dif"]
    if value <= -0.1 or value >= 0.1:
        for i in range(10):
            result_df = result_df.append(row, ignore_index=True)
    result_df = result_df.append(row, ignore_index=True)

result_df.to_csv(r"E:\Train_Model_Oversampling_NIR_10.csv", index=False)

  其中,上述程式碼的具體介紹如下。

  首先,我們需要匯入所需的庫;接下來,我們使用pd.read_csv()函式,讀取我們需要加以處理的檔案,並隨後將其中的資料儲存在名為dfDataFrame格式變數中。接下來,我們再建立一個空的DataFrame,名為result_df,用於儲存處理後的資料。

  隨後,我們使用df.iterrows()遍歷原始資料的每一行,其中index表示行索引row則是這一行具體的資料。接下來,獲取每一行中inf_dif列的值,儲存在變數value中。

  此時,我們即可基於我們的實際需求,對變數value的數值加以判斷;在我這裡,如果value的值小於等於-0.1或大於等於0.1,則就開始對這一行加以複製;因為我這裡需要複製的次數比較多,因此就使用range(10)迴圈,將當前行資料複製10次;複製的具體方法是,使用result_df.append()函式,將複製的行新增到result_df中。

  最後,還需要注意使用result_df.append()函式,將原始行資料新增到result_df中(這樣相當於對於我們需要的行,其自身再加上我們剛剛複製的那10次,一共有11行了)。

  在最後一個步驟,我們使用result_df.to_csv()函式,將處理之後的結果資料儲存為一個新的Excel表格檔案檔案,並設定index=False,表示不儲存行索引。

  執行上述程式碼,我們即可得到結果檔案。如下圖所示,可以看到結果檔案中,符合我們要求的行,已經複製了10次,也就是一共出現了11次。

  至此,大功告成。

相關文章