【问题标题】:Boolean for unique value in a column列中唯一值的布尔值
【发布时间】:2017-10-05 15:46:34
【问题描述】:

对于我的数据框,例如

df = pd.DataFrame([1, 3, 7, 1], columns=['data'])

我想知道每个索引的值在data 列中是否唯一。

所以结果数据框应该是

    data    is_unique
0   1       False
1   3       True
2   7       True
3   1       False

熊猫有没有方便的方法?

【问题讨论】:

    标签: python pandas dataframe unique


    【解决方案1】:

    使用duplicated~ 反转掩码:

    df['is_unique'] = ~df['data'].duplicated(keep=False)
    print (df)
    
       data  is_unique
    0     1      False
    1     3       True
    2     7       True
    3     1      False
    

    【讨论】:

    • 哇。极其整洁。太好了。
    • 这就是我要找的美女!谢谢!
    【解决方案2】:
    from collections import Counter
    
    c = Counter(df.client.to_list())
    
    df["new_col"] = df.client.apply(lambda x:not(c[x] >1) )
    

    【讨论】:

      【解决方案3】:

      通过使用value_counts + map

      df.assign(BOOL=df.data.map(df.data.value_counts()>1))
      Out[437]: 
         data   BOOL
      0     1   True
      1     3  False
      2     7  False
      3     1   True
      

      通过使用drop_duplicate

      df.assign(BOOL=df.index.isin(df.drop_duplicates('data',keep =False).index))
      
      Out[440]: 
         data   BOOL
      0     1  False
      1     3   True
      2     7   True
      3     1  False
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-26
        • 1970-01-01
        • 1970-01-01
        • 2011-04-13
        • 2015-01-21
        • 1970-01-01
        • 2015-04-01
        相关资源
        最近更新 更多