Pandas での連続する重複の効率的な削除
pandas DataFrame を使用する場合、多くの場合、重複値を削除する必要があります。ただし、組み込みのdrop_duplicates() メソッドは、連続した重複を含む重複値のすべてのインスタンスを削除します。連続した重複のみを削除する必要がある場合には、より効率的な方法を利用できます。
1 つの方法には、shift() 関数の使用が含まれます。 DataFrame をそのシフトされたバージョン (a.shift(-1)) と比較することにより、連続した重複が発生する場所を識別するブール マスクを作成できます。次の例に示すように、このマスクを使用して一意の値のみを選択できます。
a.loc[a.shift(-1) != a]
別の方法では diff() 関数を利用します。行間の差異を計算し、連続する重複を識別するために使用できます。ただし、大規模なデータセットの場合は、shift() メソッドよりも遅くなります。
使用:
a.loc[a.diff() != 0]
元の回答では、期間 -1 でshift() を使用することを提案していましたが、正しい使用法です。デフォルトのシフト期間は 1 なので、shift(1) (または単純にshift()) です。この変更により、最初の連続した値のみが返されるようになります:
a.loc[a.shift(1) != a]
shift() と diff() の両方これらのメソッドは、Pandas で連続する重複を削除する効率的な方法を提供するものであり、特定のコンテキストとパフォーマンス要件に基づいて検討する必要があります。
以上がPandas で連続する重複を効率的に削除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。