【问题标题】:df.unique() on whole DataFrame based on a columndf.unique() 基于列的整个 DataFrame
【发布时间】:2017-08-28 07:28:32
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-16
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2016-03-22
      • 1970-01-01
      相关资源
      最近更新 更多