为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉莫斯之舞 2021-10-12 16:46:13
我有一个包含多列的数据框,我想在其中一些列中找到重复项。我的列从 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'])])这仅返回重复的索引。我想要具有相同值的两行的索引。
查看完整描述

3 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

您的最后一次尝试已接近尾声。不要按所有列分组,只需使用您要考虑的列表:


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]


查看完整回答
反对 回复 2021-10-12
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您可以.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')}


查看完整回答
反对 回复 2021-10-12
  • 3 回答
  • 0 关注
  • 233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信