【问题标题】: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