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

Joh*_*ews 13 python duplicates dataframe python-3.x pandas

我有一个df填充行和列的DataFrame ,其中有重复的Id:

Index   Id   Type
0       a1   A
1       a2   A
2       b1   B
3       b3   B
4       a1   A
...
Run Code Online (Sandbox Code Playgroud)

我用的时候:

uniqueId = df["Id"].unique() 
Run Code Online (Sandbox Code Playgroud)

我得到一个唯一ID列表.

但是,我如何在整个DataFrame上应用此过滤,以便保留结构,但删除了重复项(基于"Id")?

jez*_*ael 18

看来你需要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
Run Code Online (Sandbox Code Playgroud)
#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
Run Code Online (Sandbox Code Playgroud)
#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
Run Code Online (Sandbox Code Playgroud)