web-dev-qa-db-ja.com

列に基づくDataFrame全体に対するdf.unique()

DataFrame dfに、重複したIDが存在する行と列が入力されています。

Index   Id   Type
0       a1   A
1       a2   A
2       b1   B
3       b3   B
4       a1   A
...

私が使うとき:

uniqueId = df["Id"].unique() 

一意のIDのリストを取得します。

ただし、このフィルタリングをDataFrame全体に適用して、構造を維持しながら重複(「Id」に基づく)を削除する方法を教えてください。

15
JohnAndrews

必要なようです DataFrame.drop_duplicates テスト重複の場所を指定するパラメータsubsetを使用:

#keep first duplicate value
df = df.drop_duplicates(subset=['Id'])
print (df)
       Id Type
Index         
0      a1    A
1      a2    A
2      b1    B
3      b3    B

#keep last duplicate value
df = df.drop_duplicates(subset=['Id'], keep='last')
print (df)
       Id Type
Index         
1      a2    A
2      b1    B
3      b3    B
4      a1    A

#remove all duplicate values
df = df.drop_duplicates(subset=['Id'], keep=False)
print (df)
       Id Type
Index         
1      a2    A
2      b1    B
3      b3    B
13
jezrael