Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでデータフレームから最初の重複行を削除する方法

Pythonのpandasライブラリを使うと、データフレーム内の重複行を簡単に削除できます。本記事では、drop_duplicates()関数を使って、特定のカラム(IdとAge)に基づく重複行のうち、最初に出現する行を削除し、最後の行を残す方法を解説します。

処理結果のイメージ

例として、次のようなデータフレームがあるとします。この中から最初の重複行を削除すると、結果は以下のようになります。

    Id Age
0    1 12
3    4 13
4    5 14
5    6 12
6    2 13
7    7 16
8    3 14
9    9 15
10  10 14

解決手順

この問題を解決するには、以下の手順に従います。

  • データフレームを定義します。
  • drop_duplicates()関数をId列とAge列に対して適用し、引数keepに「'last'」を指定します。これにより、重複している行のうち最後の行が保持され、それ以前の重複行が削除されます。
  • 結果を同じデータフレームに格納し、出力します。
df.drop_duplicates(subset=['Id','Age'],keep='last')

実装例

より理解を深めるために、実際のコードを見てみましょう。

import pandas as pd
df = pd.DataFrame({'Id':[1,2,3,4,5,6,2,7,3,9,10],
                    'Age':[12,13,14,13,14,12,13,16,14,15,14]
                  })
print("DataFrame is:\n",df)
df = df.drop_duplicates(subset=['Id','Age'],keep='last')
print("Dataframe after removing first duplicate rows:\n", df)

実行結果

DataFrame is:
    Id    Age
0    1    12
1    2    13
2    3    14
3    4    13
4    5    14
5    6    12
6    2    13
7    7    16
8    3    14
9    9    15
10  10    14
Dataframe after removing first duplicate rows:
    Id Age
0    1 12
3    4 13
4    5 14
5    6 12
6    2 13
7    7 16
8    3 14
9    9 15
10  10 14

ポイント解説

  • subset引数: 重複を判定する対象のカラムを指定します。ここでは「Id」と「Age」の両方が一致する行を重複とみなしています。省略した場合は、すべてのカラムが判定対象になります。
  • keep='last': 重複行の中で最後に出現する行を残し、それ以外(最初の重複行)を削除します。デフォルトは「'first'」で、その場合は最初の行が残ります。また、「False」を指定すると重複する行をすべて削除できます。
  • インデックスについて: 削除後も元のインデックス番号(0、3、4…)が保持される点に注意してください。連番に振り直したい場合は、reset_index(drop=True)を組み合わせると便利です。
  1. Pythonでリストから重複して出現する要素を削除し、一意な要素だけを抽出する方法

    はじめに 数値のリスト nums が与えられたとき、リスト内に複数回出現する要素を削除し、一度だけ出現する要素だけを、元のリストでの出現順序を保ったまま残すことを考えます。 例えば、入力が nums = [2, 4, 6, 1, 4, 6, 9] の場合、出力は [2, 1, 9] となります。これは、2・1・9 の3つの要素がそれぞれ一度しか登場しておらず、4 と 6 は2回ずつ出現しているため除外されるからです。 解決のアプローチ この問題は、各要素の出現回数を記録する辞書(ハッシュマップ)を使うことで効率的に解決できます。手順は以下の通りです。 出現回数をカウントするための空の辞書を

  2. Pythonでバイナリ行列の重複行を検出!Counterを使った効率的な実装方法

    0と1だけで構成されるバイナリ行列が与えられたとき、その中から重複する行を見つけて出力するのが本記事の目的です。Pythonでは標準ライブラリの collections.Counter() を活用することで、この問題を簡潔かつ効率的に解決できます。 実行例 入力:1 1 1 10 0 0 01 1 1 10 0 0 0出力:(1, 1, 1, 1)(0, 0, 0, 0) アルゴリズムの手順 0と1のみで構成されたバイナリ行列を作成します。 辞書には「行」をキー、「その出現頻度」を値として格納します。リストは変更可能(ミュータブル)なため、まず各行をタプルに変換しておきます。 Count