在數據分析和處理過程中,識別和處理重複值是一個常見但關鍵的任務。Python 的 pandas 庫提供了強大的 duplicated() 方法來處理這類問題,而其中的 keep 參數尤其值得深入理解。本文將帶您全面了解這個參數的用法和應用場景。
keep 參數的三種模式
pandas.Series.duplicated() 方法的 keep 參數有三個可選值,每個都有不同的行為:
import pandas as pd
import numpy as np
# 創建一個包含重複值的示例 Series
s = pd.Series(['A', 'B', 'C', 'A', 'B', 'D'])1. keep=’first’(默認值)
當 keep=’first’ 時,
第一次出現的值被標記為 False(未重複),
而後續重複的值被標記為 True:
print("keep='first' 結果:")
print(s.duplicated(keep='first'))
print("標記為重複的值:")
print(s[s.duplicated(keep='first')].to_list())輸出結果:

2. keep=’last’
當 keep=’last’ 時,最後一次出現的值被標記為 False,而先前出現的重複值被標記為 True:
print("\nkeep='last' 結果:")
print(s.duplicated(keep='last'))
print("標記為重複的值:")
print(s[s.duplicated(keep='last')].to_list())輸出結果:

3. keep=False
當 keep=False 時,所有重複值都被標記為 True,無論是首次還是後續出現:
print("\nkeep=False 結果:")
print(s.duplicated(keep=False))
print("標記為重複的值:")
print(s[s.duplicated(keep=False)].to_list())輸出結果:

結論
掌握 pandas 中 duplicated() 方法的 keep 參數是進行高效數據處理的關鍵。根據您的具體需求選擇合適的 keep 值,可以讓您更精確地控制如何識別和處理重複數據。
無論是進行數據清洗、自動化測試流程分析,還是識別業務邏輯中的異常模式,duplicated() 方法的靈活應用都能幫助您更好地完成任務。
通過本文的詳細說明和實例,相信您已經對 keep 參數有了全面的了解,並能在自己的項目中靈活運用這一強大工具。

推薦hahow線上學習python: https://igrape.net/30afN


![Python如何讀寫csv逗點分隔檔(每列內容為新光增有利現金流)?pandas.read_csv(r”路徑\檔名.副檔名”),如何移除list中的nan元素?math.isnan(),如何計算新光增有利IRR?numpy_financial(array) ;輸出csv檔時如何去掉index跟header?如何選擇要寫入的直欄columns? dfFinal.to_csv(fpath, index=False, header=None, columns=[0,1]) Python如何讀寫csv逗點分隔檔(每列內容為新光增有利現金流)?pandas.read_csv(r”路徑\檔名.副檔名”),如何移除list中的nan元素?math.isnan(),如何計算新光增有利IRR?numpy_financial(array) ;輸出csv檔時如何去掉index跟header?如何選擇要寫入的直欄columns? dfFinal.to_csv(fpath, index=False, header=None, columns=[0,1])](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2022/11/20221110122900_3.png?quality=90&zoom=2&ssl=1&resize=350%2C233)
![Python: 如何用numpy.ndarray的reshape 將3D array轉為2D array,再轉為pandas.DataFrame? arr.reshape( arr.shape[0] * arr.shape[1] , -1) Python: 如何用numpy.ndarray的reshape 將3D array轉為2D array,再轉為pandas.DataFrame? arr.reshape( arr.shape[0] * arr.shape[1] , -1)](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2023/03/20230320082325_85.png?quality=90&zoom=2&ssl=1&resize=350%2C233)

![Python: pandas.DataFrame()處理雙維度資料,dict跟2D list轉為DataFrame有何差別?如何用index及columns屬性客製化index跟欄位名稱?df.index = [“一”,”二”,”三”,”四”] ; df.columns = 使用.head(n) ; .tail(m) ;取首n列,尾m列; .at[index,欄位名稱] 取單一資料 ; .iat[index,欄位順序] 取單一資料 ; .loc[index,欄位名稱] 取資料 ; .iloc[index,欄位順序];df.iloc[ [0,1],[0,2]])取資料 ; df.iloc[ 0:3,0:2]切片 Python: pandas.DataFrame()處理雙維度資料,dict跟2D list轉為DataFrame有何差別?如何用index及columns屬性客製化index跟欄位名稱?df.index = [“一”,”二”,”三”,”四”] ; df.columns = 使用.head(n) ; .tail(m) ;取首n列,尾m列; .at[index,欄位名稱] 取單一資料 ; .iat[index,欄位順序] 取單一資料 ; .loc[index,欄位名稱] 取資料 ; .iloc[index,欄位順序];df.iloc[ [0,1],[0,2]])取資料 ; df.iloc[ 0:3,0:2]切片](https://i2.wp.com/savingking.com.tw/wp-content/uploads/2022/11/20221111093547_79.png?quality=90&zoom=2&ssl=1&resize=350%2C233)
![Python: 如何將folder_name, file_name合併為file_path? fpath = os.path .join(folder, fname) ; “\\”.join([folder, fname]) ; 如何將file_path拆分出folder? Python: 如何將folder_name, file_name合併為file_path? fpath = os.path .join(folder, fname) ; “\\”.join([folder, fname]) ; 如何將file_path拆分出folder?](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2023/03/20230330132954_84.png?quality=90&zoom=2&ssl=1&resize=350%2C233)
![Python: 如何創建多層column name的pandas.DataFrame? df = pd.read_csv (‘data.csv’, header=[0, 1], sep=”,”) ; col = pd .MultiIndex .from_arrays( aryCol ) Python: 如何創建多層column name的pandas.DataFrame? df = pd.read_csv (‘data.csv’, header=[0, 1], sep=”,”) ; col = pd .MultiIndex .from_arrays( aryCol )](https://i0.wp.com/savingking.com.tw/wp-content/uploads/2023/03/20230314164119_32.png?quality=90&zoom=2&ssl=1&resize=350%2C233)


近期留言