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

閱讀時間約 2 分鐘

首先,這是我們的資料

import pandas as pd

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

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

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

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

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

#在這邊我們會用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))
raw-image

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

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

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

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










avatar-img
4會員
60內容數
我是果農,這裡有我的人資職涯經驗分享,與我菜鳥般的Python資料分析筆記,還有一些讀書心得,希望對大家有幫助。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
果農的沙龍 的其他內容
你可能也想看
Google News 追蹤
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳student_id為101的這筆資料,並且列出它的"name"和"age"欄位。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ |
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳資料表的前3個Row。 題目的原文敘述 測試範例 Example 1: Input: DataFrame employees +-------------+-----------+-------------
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳student_id為101的這筆資料,並且列出它的"name"和"age"欄位。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ |
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們回傳資料表的前3個Row。 題目的原文敘述 測試範例 Example 1: Input: DataFrame employees +-------------+-----------+-------------