パンダのドロップ重複行 – drop_duplicates() 関数
パンダのdrop_duplicates()関数の構文
パンダのdrop_duplicates()関数は、データフレームから重複する行を削除します。その構文は次のようになります。
drop_duplicates(self, subset=None, keep="first", inplace=False)
- subset: column label or sequence of labels to consider for identifying duplicate rows. By default, all the columns are used to find the duplicate rows.
- keep: allowed values are {‘first’, ‘last’, False}, default ‘first’. If ‘first’, duplicate rows except the first one is deleted. If ‘last’, duplicate rows except the last one is deleted. If False, all the duplicate rows are deleted.
- inplace: if True, the source DataFrame is changed and None is returned. By default, source DataFrame remains unchanged and a new DataFrame instance is returned.
パンダの重複行の削除の例
データフレームオブジェクトから重複した行を削除するいくつかの例を見てみましょう。
重複行を削除し、最初の行を残す。
引数が渡されない場合、これはデフォルトの動作となります。
import pandas as pd
d1 = {'A': [1, 1, 1, 2], 'B': [2, 2, 2, 3], 'C': [3, 3, 4, 5]}
source_df = pd.DataFrame(d1)
print('Source DataFrame:\n', source_df)
# keep first duplicate row
result_df = source_df.drop_duplicates()
print('Result DataFrame:\n', result_df)
結果を日本語で自然に言い換えてください。オプションは一つだけ必要です。
出力:
Source DataFrame:
A B C
0 1 2 3
1 1 2 3
2 1 2 4
3 2 3 5
Result DataFrame:
A B C
0 1 2 3
2 1 2 4
3 2 3 5
ソースのDataFrameの0行目と1行目は重複しています。最初の出現は保持され、重複したその他の行は削除されます。
2. 重複を削除し、最後の行を残す。
result_df = source_df.drop_duplicates(keep='last')
print('Result DataFrame:\n', result_df)
出力:
Result DataFrame:
A B C
1 1 2 3
2 1 2 4
3 2 3 5
インデックス「0」が削除され、出力では最後の重複行「1」が保持されます。
3. データフレームから重複するすべての行を削除してください。
result_df = source_df.drop_duplicates(keep=False)
print('Result DataFrame:\n', result_df)
出力:
Result DataFrame:
A B C
2 1 2 4
3 2 3 5
結果のDataFrameから、重複した行の ‘0’ と ‘1’ は削除されます。
4. 特定の列に基づいて重複する行を特定する
import pandas as pd
d1 = {'A': [1, 1, 1, 2], 'B': [2, 2, 2, 3], 'C': [3, 3, 4, 5]}
source_df = pd.DataFrame(d1)
print('Source DataFrame:\n', source_df)
result_df = source_df.drop_duplicates(subset=['A', 'B'])
print('Result DataFrame:\n', result_df)
出力:
Source DataFrame:
A B C
0 1 2 3
1 1 2 3
2 1 2 4
3 2 3 5
Result DataFrame:
A B C
0 1 2 3
3 2 3 5
列「A」と「B」は、重複する行を特定するために使用されます。したがって、行0、1、および2は重複しています。したがって、行1と2は出力から削除されます。
5. 重複する行を現場で削除する
source_df.drop_duplicates(inplace=True)
print(source_df)
出力されるもの:
A B C
0 1 2 3
2 1 2 4
3 2 3 5
参考文献
- Python Pandas Module Tutorial
- Pandas DataFrame drop_duplicates() API Doc