基于列的整个DataFrame上的df.unique()

时间:2017-04-03 12:19:08

标签: python python-3.x pandas dataframe duplicates

我有一个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")?

1 个答案:

答案 0 :(得分:7)

您似乎需要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