Pandas:如何添加列与真/假,如果另一列包含重复或不

oalqel3c  于 2022-12-16  发布在  其他
关注(0)|答案(2)|浏览(150)

我有以下 Dataframe :

d_test = {'name' : ['Beach', 'Dog', 'Bird', 'Dog', 'Ant', 'Beach']}
df_test = pd.DataFrame(d_test)

我想添加列duplicate,其中每个条目都为True/Fasle。如果列name中只有一个条目,并且在任何其他情况下True中只有一个条目,我希望False仅用于case。

name   duplicate
0   Beach  True
1   Dog    True
2   Bird   False
3   Dog    True
4   Ant    False
5   Beach  True

我正在寻找df.groupby('...')方法,但我不确定如何将其应用于我的情况。

2q5ifsrm

2q5ifsrm1#

Series.duplicatedkeep=False一起使用:

df_test['duplicate'] = df_test['name'].duplicated(keep=False)
print (df_test)
    name  duplicate
0  Beach       True
1    Dog       True
2   Bird      False
3    Dog       True
4    Ant      False
5  Beach       True

如果需要测试计数数量,如果不匹配,则为真,使用GroupBy.transformGroupBy.size,并比较是否不相等:

N = 1
df_test['duplicate'] = df_test.groupby('name')['name'].transform('size').ne(N)
inb24sb2

inb24sb22#

pandas.Series.duplicatedas jezrael shared)的替代方法是将pandas.Series.mappandas.Series.value_counts一起使用,如下所示

df_test['duplicate'] = df_test['name'].map(df_test['name'].value_counts() > 1)

[Out]:

    name  duplicate
0  Beach       True
1    Dog       True
2   Bird      False
3    Dog       True
4    Ant      False
5  Beach       True

相关问题