如何获取数据帧中所有重复项的索引(pandas - python)

我有一个包含多列的数据框,我想在其中一些列中找到重复项。我的列从 A 到 Z。我想知道 A、D、F、K、L 和 G 列中哪些行具有相同的值。


我试过:


df = df[df.duplicated(keep=False)]

df = df.groupby(df.columns.tolist()).apply(lambda x: tuple(x.index)).tolist()

但是,这会使用所有列。


我也试过


print(df[df.duplicated(['A', 'D', 'F', 'K', 'L', 'P'])])

这仅返回重复的索引。我想要具有相同值的两行的索引。


拉莫斯之舞
浏览 234回答 3
3回答

互换的青春

您的最后一次尝试已接近尾声。不要按所有列分组,只需使用您要考虑的列表:df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 2],                   'B': [3, 3, 3, 4, 4, 5],                   'C': [6, 7, 8, 9, 10, 11]})res = df.groupby(['A', 'B']).apply(lambda x: (x.index).tolist()).reset_index()print(res)#    A  B          0# 0  1  3  [0, 1, 2]# 1  2  4     [3, 4]# 2  2  5        [5]

犯罪嫌疑人X

您可以.groupby返回一个 dict键是组标签(多列的元组)和值是索引df.groupby(['A', 'B']).groups#{(1, 3): Int64Index([0, 1, 2], dtype='int64'),# (2, 4): Int64Index([3, 4], dtype='int64'),# (2, 5): Int64Index([5], dtype='int64')}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python