删除具有可互换名称值的行的重复项(熊猫、Python)

删除具有可互换名称值的行的重复项(熊猫、Python),python,pandas,duplicates,Python,Pandas,Duplicates,我有一个表单的数据框架 person1, person2, ..., someMetric John, Steve, ..., 20 Peter, Larry, ..., 12 Steve, John, ..., 20 第0行和第2行是可互换的重复行,因此我想删除最后一行。我不知道如何在熊猫身上做到这一点 谢谢 这里有一个基于NumPy的解决方案- df[~(np.triu(df.person1.values[:,None] == df.person2.values)).any(0)] 样本

我有一个表单的数据框架

person1, person2, ..., someMetric
John, Steve, ..., 20
Peter, Larry, ..., 12
Steve, John, ..., 20
第0行和第2行是可互换的重复行,因此我想删除最后一行。我不知道如何在熊猫身上做到这一点


谢谢

这里有一个基于NumPy的解决方案-

df[~(np.triu(df.person1.values[:,None] == df.person2.values)).any(0)]
样本运行-

In [123]: df
Out[123]: 
  person1 person2 someMetric
0    John   Steve         20
1   Peter   Larry         13
2   Steve    John         19
3   Peter  Parker          5
4   Larry   Peter          7

In [124]: df[~(np.triu(df.person1.values[:,None] == df.person2.values)).any(0)]
Out[124]: 
  person1 person2 someMetric
0    John   Steve         20
1   Peter   Larry         13
3   Peter  Parker          5
大熊猫的研究方法

df = pd.DataFrame(
{'person2':  {0: 'Steve', 1: 'Larry', 2: 'John', 3: 'Parker', 4: 'Peter'}, 
'person1': {0: 'John', 1: 'Peter', 2: 'Steve', 3: 'Peter', 4: 'Larry'}, 
'someMetric': {0: 20, 1: 13, 2: 19, 3: 5, 4: 7}})


print(df)
  person1 person2 someMetric
0    John   Steve         20
1   Peter   Larry         13
2   Steve    John         19
3   Peter  Parker          5
4   Larry   Peter          7


df['ordered-name'] = df.apply(lambda x: '-'.join(sorted([x['person1'],x['person2']])),axis=1)
df = df.drop_duplicates(['ordered-name'])
df.drop(['ordered-name'], axis=1, inplace=True)
print df
其中:

  person1 person2  someMetric
0    John   Steve          20
1   Peter   Larry          13
3   Peter  Parker           5

可能的重复项是否仅由person1和person2确定,或者是否涉及其他列?是的,person1和person2是唯一标识符。还有其他列,但重要的关系是这两个人之间的关系。如果最后一行的
sometric
不是
20
,您还会删除它吗?另外,如果最后一行是第一行的精确副本,我们还要删除它吗?是的,对于所有成对的行R1和R2,其中R1.person1=R2.person2和R1.person2=R2.person1我想删除R2I已经删除了所有精确副本