pandas 检查列中的行是否唯一python Dataframe

4c8rllxm  于 2022-12-21  发布在  Python
关注(0)|答案(3)|浏览(184)

我有以下 Dataframe :
| 识别码1|结果|
| - ------| - ------|
| 第二章|0.5分|
| 三个|1.4岁|
| 四个|1.4岁|
| 七|三、四|
| 第二章|1.4岁|
我想检查列['id1']中的每一行的值是否唯一
输出应为:
假真真真假
第一个和最后一个为False,因为id 2存在两次。
我用了这个方法:
bool = df["id1"].is_unique,但它检查整个列是否唯一。我想检查每行

hmmo2u0o

hmmo2u0o1#

df['id1'].map(~(df.groupby('id1').size() > 1))
输出
0    False
1     True
2     True
3     True
4    False
Name: id1, dtype: bool
cnh2zyt3

cnh2zyt32#

因为我看到你用Pandas标记了这个问题,我猜你用的是Pandas包。
您可以在这里创建一个包含一串id1的数组,然后使用pd.Series.duplicated方法,如下例所示。
你可以在这里找到Pandas医生。

import pandas as pd
check_id1_duplicate = pd.Index([2, 3, 4, 7, 2])
check_id1_duplicate.duplicated(keep=False)
# Results would be array([True, False, False, False, True])
tzcvj98z

tzcvj98z3#

为了补充@ShiriNmi的答案,duplicated解决方案更直观,速度快了大约8倍,同时返回相同的结果。

%timeit -n 10_000 df['id1'].map(~(df.groupby('id1').size() > 1))
# 697 µs ± 60.3 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)

%timeit ~df['id1'].duplicated(keep=False)
# 89.5 µs ± 1.26 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)

相关问题