列中唯一值的布尔值

时间:2017-10-05 15:46:35

标签: python pandas dataframe unique

对于我的数据框,例如

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

pandas有方便的方法吗?

3 个答案:

答案 0 :(得分:7)

~使用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

答案 1 :(得分:1)

from collections import Counter

c = Counter(df.client.to_list())

df["new_col"] = df.client.apply(lambda x:not(c[x] >1) )

答案 2 :(得分:0)

使用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