我有以下 Dataframe :| 识别码1|结果|| - ------| - ------|| 第二章|0.5分|| 三个|1.4岁|| 四个|1.4岁|| 七|三、四|| 第二章|1.4岁|我想检查列['id1']中的每一行的值是否唯一输出应为:假真真真假第一个和最后一个为False,因为id 2存在两次。我用了这个方法:bool = df["id1"].is_unique,但它检查整个列是否唯一。我想检查每行
bool = df["id1"].is_unique
hmmo2u0o1#
df['id1'].map(~(df.groupby('id1').size() > 1))
0 False 1 True 2 True 3 True 4 False Name: id1, dtype: bool
cnh2zyt32#
因为我看到你用Pandas标记了这个问题,我猜你用的是Pandas包。您可以在这里创建一个包含一串id1的数组,然后使用pd.Series.duplicated方法,如下例所示。你可以在这里找到Pandas医生。
pd.Series.duplicated
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])
tzcvj98z3#
为了补充@ShiriNmi的答案,duplicated解决方案更直观,速度快了大约8倍,同时返回相同的结果。
duplicated
%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)
3条答案
按热度按时间hmmo2u0o1#
输出
cnh2zyt32#
因为我看到你用Pandas标记了这个问题,我猜你用的是Pandas包。
您可以在这里创建一个包含一串id1的数组,然后使用
pd.Series.duplicated
方法,如下例所示。你可以在这里找到Pandas医生。
tzcvj98z3#
为了补充@ShiriNmi的答案,
duplicated
解决方案更直观,速度快了大约8倍,同时返回相同的结果。