熊猫:检查列值是否唯一

时间:2021-03-30 10:59:06

标签: python pandas

我有一个像:

         value
0          1
1          2
2          2
3          3
4          4
5          4

我需要检查每个值是否唯一,并将该布尔值标记为新列。预期结果是:

         value        unique
0          1           True
1          2           False
2          2           False
3          3           True
4          4           False
5          4           False

我试过了:

df['unique'] = ""
df.loc[df["value"].is_unique, 'unique'] = True

但这会引发异常:

cannot use a single bool to index into setitem

任何建议将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:5)

使用 Series.duplicated~ 的反转掩码:

df['unique'] = ~df['value'].duplicated(keep=False)
print (df)
   value  unique
0      1    True
1      2   False
2      2   False
3      3    True
4      4   False
5      4   False

或者:

df['unique'] = np.where(df['value'].duplicated(keep=False), False, True)

答案 1 :(得分:0)

这也有效:

df['unique'] = df.merge(df.value_counts().to_frame(), on='value')[0]==1