首先,這是我們的資料
import pandas as pd
data = pd.read_excel("範例.xlsx")
假設我們要篩選出每個員工的第一筆休假紀錄,那我們要先做排序。
依照員工身分的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)