2024-06-14|閱讀時間 ‧ 約 23 分鐘

如何用Python篩選每個人的第一筆紀錄?

首先,這是我們的資料

import pandas as pd

data = pd.read_excel("範例.xlsx")
raw-image

假設我們要篩選出每個員工的第一筆休假紀錄,那我們要先做排序。

依照員工身分的KEY值與休假日期做排序,讓每個人的休假日的順序都是有舊到新。

data.sort_values(by=["員工編號","休假日"],ignore_index=True,inplace=True)

接著我們要做出能幫助我們篩選的欄位:

#在這邊我們會用data的index幫助我們辨識迴圈中的該資料是不是這個員工的第一筆資料:​

#我們先建立一個自定義函數:​
def Proc(x):
#如果index是0時(data中的第一筆資料)回傳數字1​
    if x == 0 :
        return 1
#如果index不是0:
    else :
#如果現在這一筆的員工編號,與上一筆的員工編號相同,回傳數字0​
        if data["員工編號"].values[x] == data["員工編號"].values[x-1]:
            return 0
#其它狀況,回傳數字1
        else :return 1

#利用自定義函數與map函數建立新欄位​
data["第一筆_記號"] = list(map(lambda x: Proc(x),data.index))

接著我們再做一些整理與篩選作業,就完成囉。

#篩選第一筆休假紀錄​
data = data[data["第一筆_記號"] == 1]

#​重設index
data.reset_index(drop=True,inplace=True)

#​丟掉幫助我們篩選的欄位
data.drop(columns="第一筆_記號",inplace=True)










分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.