检测导致行唯一性的列

2024-04-20 10:53:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试删除包含许多列的pandas数据帧中的重复行。问题是必须有一些列具有唯一值,因为 df.drop_duplicates(subset=None, keep='first', inplace=True) 不会删除我期望的所有行

选择两行在我看来是重复的,我尝试了视觉比较,但无法识别它们之间的差异。由于有许多列,目视检查非常耗时且容易出错我想要一种自动方式来查找行列表中存在差异的列。我不知道如何在熊猫身上做到这一点,我对熊猫还相当陌生。我没有发现以前关于这个话题的任何问题

编辑:我感兴趣的是检测具有唯一值的列,而不是仅仅基于预定的列子集删除重复项


Tags: 数据nonetruepandasdf视觉差异drop
1条回答
网友
1楼 · 发布于 2024-04-20 10:53:49

对于两行,迭代每行的值以找出它们的差异:

import pandas as pd
data = {'a': [1, 1], 'b': [1, 1], 'c': [1, 2], 'd': [1, 3]}

df = pd.DataFrame(data, index=['foo', 'bar'])
     a  b  c  d
foo  1  1  1  1
bar  1  1  2  3
differences = [i for i, (x,y) in enumerate(zip(df.loc['foo'].values, df.loc['bar',:].values)) if x!=y ]
df.iloc[:, differences]
     c  d
foo  1  1
bar  2  3

现在,对于一组行,您需要在行之间进行所有可能的成对比较,每次都可能产生不同的结果

相关问题 更多 >