2017-10-05 36 views
1

对于我的数据帧,例如对于列中的唯一值的布尔值

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 

是否与大熊猫一个方便的方法?

回答

6

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

哇。非常整齐。大。 –

+1

这就是我一直在寻找的美丽!谢谢! –

+0

不客气!谢谢大家。 – jezrael

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