我有一个包含多列的数据框,我想在其中一些列中找到重复项。我的列从 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]
犯罪嫌疑人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')}
添加回答
举报
0/150
提交
取消