首頁 >後端開發 >Python教學 >如何根據 Pandas 中的索引有效刪除重複行?

如何根據 Pandas 中的索引有效刪除重複行?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-18 18:26:02967瀏覽

How to Efficiently Remove Duplicate Rows Based on Indices in Pandas?

移除 Pandas 中重複索引的行

在資料分析場景中,可能會出現重複索引,需要有效去除此類行。本文探討了使用廣泛使用的 Pandas 庫來解決此問題的方法。

Pandas 的重複刪除方法

Pandas 提供了幾種根據索引值刪除重複行的方法:

  • resetet_index ().drop_duplicates(subset='index').set_index('index'):此方法涉及重設DataFrame 索引,使用drop_duplicates() 識別重複項,並將原始索引設定回索引列。
  • groupby().first():更簡潔的方法包括依索引將 DataFrame 分組,並使用first() 函數。
  • [~df3.index.duplicate(keep='first')]:duplicated 方法直接對 Pandas Index 進行操作,實現去重的同時保留第一個例子。您可以使用 keep='last' 保留重複項的最後一個實例。

效能比較

每種方法的時間複雜度根據大小而變化和 DataFrame 的複雜性。使用範例 DataFrame 對這些方法進行基準測試:

  • drop_duplicates(subset='index'): 由於其底層排序操作而效能最低。
  • groupby().first():效能稍差於plicated()。
  • [~df3.index.duplicated(keep='first')]:表現最高,可讀。

範例示範

為了說明重複方法的使用,請考慮具有重複索引值的範例 DataFrame df3:

import pandas as pd
import datetime

# Example DataFrame with duplicate indices
startdate = datetime.datetime(2001, 1, 1, 0, 0)
enddate = datetime.datetime(2001, 1, 1, 5, 0)
index = pd.date_range(start=startdate, end=enddate, freq='H')
data1 = {'A' : range(6), 'B' : range(6)}
data2 = {'A' : [20, -30, 40], 'B' : [-50, 60, -70]}
df1 = pd.DataFrame(data=data1, index=index)
df2 = pd.DataFrame(data=data2, index=index[:3])
df3 = df2.append(df1)

print(df3)

# Remove duplicate rows with duplicate indices
df3 = df3[~df3.index.duplicated(keep='first')]

print(df3)

以上是如何根據 Pandas 中的索引有效刪除重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn