web-dev-qa-db-ja.com

一部の列のみが同じ値を持つPandasデータフレームから重複行を削除

次のようにpandasデータフレームがあります:

A   B   C
1   2   x
1   2   y
3   4   z
3   5   x

特定の列で同じ値を共有する行のうち、1行だけが残るようにします。上記の例では、列[〜#〜] a [〜#〜]および[〜#〜] b [〜#〜]を意味します。つまり、列の値[〜#〜] a [〜#〜]および[〜#〜] b [〜#〜]が複数回出現する場合データフレームには、1行のみが残っている必要があります(1行は重要ではありません)。

FWIW:いわゆる重複行の最大数(つまり、列[〜#〜] a [〜#〜]および[〜#〜] b [〜#〜]は同じです)は2です。

結果は次のようになります。

A   B   C
1   2   x
3   4   z
3   5   x

または

A   B   C
1   2   y
3   4   z
3   5   x
7
beta

drop_duplicates をパラメーターsubsetとともに使用し、最後に複製された行のみを保持するためにkeep='last'を追加します。

df1 = df.drop_duplicates(subset=['A','B'])
#same as
#df1 = df.drop_duplicates(subset=['A','B'], keep='first')
print (df1)
   A  B  C
0  1  2  x
2  3  4  z
3  3  5  x

df2 = df.drop_duplicates(subset=['A','B'], keep='last')
print (df2)
   A  B  C
1  1  2  y
2  3  4  z
3  3  5  x
19
jezrael