Pandas:如何添加列标记name列数据是否存在重复
用groupby实现重复值标记列
你可以通过groupby结合transform方法来实现需求,transform能保证返回与原DataFrame长度一致的结果,完美匹配每一行的标记:
完整代码
import pandas as pd d_test = {'name' : ['Beach', 'Dog', 'Bird', 'Dog', 'Ant', 'Beach']} df_test = pd.DataFrame(d_test) # 按name分组,计算每组长度并判断是否大于1,映射回原数据 df_test['duplicate'] = df_test.groupby('name')['name'].transform(lambda x: len(x) > 1)
执行后结果
name duplicate 0 Beach True 1 Dog True 2 Bird False 3 Dog True 4 Ant False 5 Beach True
原理说明
groupby('name')将数据按name列的不同值分组transform(lambda x: len(x) > 1)对每个分组执行:计算分组的行数(即该name出现的次数),如果次数大于1则返回True,否则返回False- 最终
transform会把每个分组的结果对应到原DataFrame的每一行,自动匹配行与分组的对应关系
内容的提问来源于stack exchange,提问作者illuminato
相关产品推荐
相关产品推荐

