ホームページ >バックエンド開発 >Python チュートリアル >Pandas のインデックスに基づいて重複行を効率的に削除する方法は?

Pandas のインデックスに基づいて重複行を効率的に削除する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-18 18:26:02970ブラウズ

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

重複したインデックスを持つ Pandas 行の削除

データ分析シナリオでは、重複したインデックスが発生する可能性があるため、そのような行を効率的に削除する必要があります。 。この記事では、広く使用されている Pandas ライブラリを使用したこの問題の解決策を検討します。

Pandas の重複削除のアプローチ

Pandas は、インデックスに基づいて重複行を削除するためのいくつかの方法を提供します。値:

  • reset_index().drop_duplicates(subset='index').set_index('index'): このアプローチには、DataFrame インデックスのリセット、drop_duplicates( を使用した重複の識別が含まれます) )、元のインデックスをインデックスとして設定し直します。 column.
  • groupby().first(): より簡潔な方法には、DataFrame をインデックスでグループ化し、first() 関数を使用して最初に出現するものを選択することが含まれます。
  • [~df3.index.duplicated(keep='first')]: 複製されたメソッドは Pandas 上で直接動作しますインデックス。最初のインスタンスを保持しながら重複を削除できます。 keep='last' を使用すると、重複の最後のインスタンスを保持できます。

パフォーマンスの比較

各メソッドの時間計算量はサイズに応じて異なります。そしてDataFrameの複雑さ。サンプル DataFrame を使用したこれらのメソッドのベンチマーク:

  • drop_duplicates(subset='index'): 基礎となる並べ替え操作のため、パフォーマンスが最も低くなります。
  • groupby().first(): よりわずかにパフォーマンスが劣りますduplicad().
  • [~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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。