python-如何删除每行中的重复列表(熊猫)?

python-如何删除每行中的重复列表(熊猫)?,python,pandas,list,Python,Pandas,List,我在每一行中都有一个列表,我想通过保留分数中的最高值来删除重复的元素 这是来自数据帧df1的数据 pair score 0 [A , A ] 1.0000 1 [A , F ] 0.9990 2 [A , G ] 0.9985 3 [A , G ] 0.9975 4 [A , H ] 0.9985 5 [A , H ] 0.9990 我希望看到结果 pair score 0

我在每一行中都有一个列表,我想通过保留分数中的最高值来删除重复的元素

这是来自数据帧df1的数据

        pair    score
0   [A , A ]    1.0000
1   [A , F ]    0.9990
2   [A , G ]    0.9985
3   [A , G ]    0.9975
4   [A , H ]    0.9985
5   [A , H ]    0.9990
我希望看到结果

            pair    score
    0   [A , A ]    1.0000
    1   [A , F ]    0.9990
    2   [A , G ]    0.9985
    4   [A , H ]    0.9990

我曾尝试使用group by并设置一个score=max,但它不起作用

首先,我认为在pandas中使用
列表
s不起作用

如果使用元组将列表转换为帮助器列,则解决方案有效-然后使用:

或添加到2个新列:

df[['a', 'b']] = pd.DataFrame(df.pair.values.tolist())
df = df.sort_values('score', ascending=False).drop_duplicates(['a', 'b'])
print (df)
     pair   score  a  b
0  [A, A]  1.0000  A  A
1  [A, F]  0.9990  A  F
5  [A, H]  0.9990  A  H
2  [A, G]  0.9985  A  G

使用字符串类型的排序值创建新列
pair2
,然后删除重复项 如果对具有值
[A,G]
[G,A]
对它们进行相同处理,则将进行处理

df['pair2']=df.pair.map(sorted).astype(str)
df.sort_values('score',ascending=False).drop_duplicates('pair2',keep='first').drop('pair2',axis=1).reset_index(drop=True)
输出:

pair    score
[A, A]  1.0000
[A, F]  0.9990
[A, H]  0.9990
[A, G]  0.9985

列表是不可散列的,因此不能按它们分组。试着把它们做成元组。
pair    score
[A, A]  1.0000
[A, F]  0.9990
[A, H]  0.9990
[A, G]  0.9985