2017-04-03 698 views
4

我有一个数据帧df充满了行和列,其中有重复的Id:df.unique()对整个数据帧基于列

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”)?

回答

3

看来你需要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