考虑下面的数据文件:
data_so = {
'ID': [100, 100, 100, 200, 200, 300, 300, 300],
'letter': ['A','B','A','C','D','E','D','A'],
}
df_so = pandas.DataFrame (data_so, columns = ['ID', 'letter'])
我想获得一个新列,其中不同组中的所有重复项均为真。同一组中的所有其他重复项都应为False
我试过使用
df_so['dup'] = df_so.duplicated(subset=['letter'], keep=False)
但结果不是我想要的:
组1(第0行)中第一次出现的是True
,因为另一个组(第7行)中存在重复项。但是,在同一组(第2行)中,所有其他的A发生率应为False
如果删除了第7行,那么第0行应该是False
,因为在任何其他组中都不再存在
正如您在评论中所阐明的,您需要在当前
duplicated
旁边添加一个掩码注意:我在评论中添加了
row=8
我对这个问题的看法是:
我将按ID和字母列进行分组。然后简单地选择第一行
您需要的基本上是两个不同的
duplicated()
调用的AND
~df_so.duplicated()
组内交易df_so.drop_duplicates().duplicated(subset='letter',keep=False).fillna(True)
忽略当前组重复项的组间交易代码:
输出:
其他情况:
输出:
相关问题 更多 >
编程相关推荐