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メソッドを追加して実行してみましょう。
重複する行数を取得することができました。