【毎日Python】Pythonでデータフレームの重複する行を抽出する方法|DataFrame.duplicated

duplicated
こつこつPython
import pandas as pd

df = pd.DataFrame({'col01': ['A', 'D', 'C', 'D', 'A', 'C', 'D', 'A'],
                   'col02': ['a', 'aa', 'c', 'd', 'a', 'c', 'd', 'aa'],
                   'col03': [110, 110, 130, 140, 110, 130, 140, 160]})

df

Pythonでデータフレームやシリーズから重複する行を抽出する方法です。
使用するのは、Pandasライブラリのduplicatedメソッドです。
なお、重複とは行の要素全てが重複することを意味します。

このようなデータフレームを用意します。

df.duplicated()

早速実行してみましょう。
重複のある行はTrue、それ以外の行はFalseと表示されました。
また、重複したデータの最初の行がFalse、ほかがTrueとなります。

df[df.duplicated()]

重複したデータの値をデータフレームで表示してみましょう。
実行します。
表示できました。

df.duplicated(keep='last')

引数keepにlastを指定すると、重複したデータの最後の行がFalse、ほかがTrueとなります。
実行します。
先ほどとは逆にうしろの行がFalseとなりました。

df.duplicated(subset='col02')

指定した列だけの重複を確認したい場合は、subsetの引数に列名を指定します。
実行します。

2列目の重複を確認できました。

df[df.duplicated(subset='col02')]
df.duplicated(subset='col02').sum()

なお、重複する行数のみを確認したい場合は、合計値を算出するsumメソッドを追加して実行してみましょう。
重複する行数を取得することができました。

関連メソッド

【毎日Python】Pandasのデータフレームの重複する行を削除する方法|drop_duplicates

【毎日Python】Pandasでデータフレームから重複のないデータを取得する方法|unique

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト