Pandas:检查列值是否唯一

4

我有一个类似这样的数据框:

         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个回答

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
工作得非常完美,就像你的答案一样总是...谢谢! - Mr. Engineer

0

这也行:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接