在删除行的重复组合值后,重复项并未删除

时间:2019-03-18 07:02:10

标签: python-3.x pandas dataframe duplicates data-analysis

我正在尝试删除df中两个cols的重复值-我没有收到错误,但是代码可以运行,但不能删除重复项-

enter image description here 首先,我运行以下功能删除所有可能的重复组合,如下所示-

def remove_dup_combos(df):
u = df.filter(like='id').values
m = pd.DataFrame(np.sort(u, axis=1)).duplicated()
df = df[~m]

return df

这会删除所有重复的连击

enter image description here

我现在尝试使用

删除两个id列中的所有重复项
def remove_dups(df):
df = df.drop_duplicates(['id1', 'id2'],keep='first')

return df

但这不会给我输出过多的输出,并且输出与上面的第二个输出相同

谢谢!

2 个答案:

答案 0 :(得分:1)

似乎您希望根据 unordered id来确定重复项,而Pandas对此并不了解。例如,这两个条目

df = pd.DataFrame([['a', 'b'], ['b', 'a']], columns=['id1', 'id2'])

  id1 id2
0   a   b
1   b   a

将被认为是不同的,因为它们在id1id2上不匹配。如果要检查两个id的无序集是否重复,可以比较它们的最小值和最大值是否重复。例如,添加一些临时列,

df.assign(min_id = lambda x : x[['id1', 'id2']].min(axis=1),
          max_id = lambda x : x[['id1', 'id2']].max(axis=1)) \
    .drop_duplicates(subset=['min_id', 'max_id']) \
    .drop(['min_id', 'max_id'], axis=1)

这几乎是问题中的NumPy解决方案正在做的事情。

答案 1 :(得分:0)

如果需要删除每列相同的值:

df = df[df['id1'] != df['id2']]