PythonのPandasで重複した行の抽出と削除について

Python,イメージ

AI実装検定のご案内

PythonのPandasには、重複行の検出削除を行うための便利なメソッドが用意されています。

主に使うのは以下の2つです。

  • duplicated() : 重複しているかどうかを判定
  • drop_duplicates() : 重複行を削除

それぞれ詳しく解説します。

目次

重複行の抽出(duplicated()

duplicated()は各行がすでに出現した行と同じかどうかTrue/Falseで返します。

デフォルトでは、先に出てきた行を残して後の重複をTrueにします。

import pandas as pd

data = {
    "name": ["Alice", "Bob", "Alice", "Charlie", "Bob"],
    "age": [25, 30, 25, 35, 30]
}
df = pd.DataFrame(data)

print(df)

基本的な使い方

df.duplicated()

つまり、行2(Alice,25)と行4(Bob,30)が重複と判定されました。

重複行を抽出

df[df.duplicated()]

重複行の削除(drop_duplicates()

重複行を削除して新しいDataFrameを返します。

デフォルトでは最初の出現を残して、以降の重複を削除します。

df.drop_duplicates()

特定の列で重複判定(subset引数)

全列ではなく、一部の列で重複を判定することも可能です。

例:nameだけで重複判定

df.drop_duplicates(subset=["name"])

AliceBobの2回目以降は削除される。

残す重複の基準(keep引数)

  • keep="first" : 最初の行を残す(デフォルト)
  • keep="last" : 最後の行を残す
  • keep=False : すべて削除(完全に重複を排除)

例:最後を残す

df.drop_duplicates(keep="last")

まとめ

  • 抽出: df[df.duplicated()]
  • 削除: df.drop_duplicates()
  • 特定の列で判定: subset=["列名"]
  • 残す基準: keep="first" | "last" | False

以上、PythonのPandasで重複した行の抽出と削除についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次