我正在尝试删除df中两个cols的重复值-我没有收到错误,但是代码可以运行,但不能删除重复项-
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
这会删除所有重复的连击
我现在尝试使用
删除两个id列中的所有重复项def remove_dups(df):
df = df.drop_duplicates(['id1', 'id2'],keep='first')
return df
但这不会给我输出过多的输出,并且输出与上面的第二个输出相同
谢谢!
答案 0 :(得分:1)
似乎您希望根据 unordered id来确定重复项,而Pandas对此并不了解。例如,这两个条目
df = pd.DataFrame([['a', 'b'], ['b', 'a']], columns=['id1', 'id2'])
id1 id2
0 a b
1 b a
将被认为是不同的,因为它们在id1
或id2
上不匹配。如果要检查两个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']]