删除重复的行,如果包含所有相同的值 [英] Drop duplicate row, If contain all same value

查看:53
本文介绍了删除重复的行,如果包含所有相同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Dataframe,如下所示:

df = pd.DataFrame({'first' : ['John', 'Mary','Peter'],
                      'last' : ['Mary', 'John','Mary']})

df
Out[700]: 
   first  last
0   John  Mary
1   Mary  John
2  Peter  Mary

当行包含相同值时,我想删除重复项 在这种情况下,预期的投放量将是:

I want to drop the duplicate when row contain the same value In this case, the expected out put will be :

   first  last  
0   John  Mary  
2  Peter  Mary 

以下是我到目前为止的方法:

Below is my approach so far:

df['DropKey']=df.apply(lambda x: ''.join(sorted(pd.Series(x))),axis=1)
df.drop_duplicates('DropKey')

有没有有效的方法来实现这一目标?

Are there any efficient way to achieve this ?

我的实际数据大小:

df.shape
Out[709]: (10000, 607)

推荐答案

In [13]: pd.DataFrame(np.sort(df.values, axis=1), columns=df.columns).drop_duplicates()
Out[13]:
  first   last
0  John   Mary
2  Mary  Peter

或:

In [18]: df.values.sort(axis=1)  # NOTE: it sorts DF in-place

In [19]: df
Out[19]:
  first   last
0  John   Mary
1  John   Mary
2  Mary  Peter

In [20]: df.drop_duplicates()
Out[20]:
  first   last
0  John   Mary
2  Mary  Peter

这篇关于删除重复的行,如果包含所有相同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆