从列中的列表中删除重复项

分享于2022年07月17日 hash list python 问答
【问题标题】:从列中的列表中删除重复项(Remove duplicates from lists in columns)
【发布时间】:2022-01-27 23:44:01
【问题描述】:

我在数据帧 df 中有两列 Col_A 和 Col_B。

Remove duplicates from lists in columns

Col_A                   Col_B
[1.222, 1.222, 1.333]   [cla:pl:dr, cla:pl:dr]
[]                      [clp:dp, xr.ld, xr.ld]
[1.29.1, 1.1, 1.1]      [ru:pun, ru:pun, hm:dm]

我想删除 ea 中的重复值。 EA的清单。 Col_A 和 Col_B 的行,如下所示。

Remove duplicates from lists in columns

type(df['Col_A'][0]) 返回 list

我尝试过的示例返回不可散列的类型错误。我试图避免此错误无济于事的方法包括:

df['Col_A'].map(lambda x: tuple(set(x)))

我该如何解决这个问题?

编辑:复制粘贴的数据。

  • 请复制/粘贴您的数据,请勿粘贴图片
  • 这段代码运行良好
  • 事实证明我的列表值不是可散列的类型。我只是将它们转换为字符串值。现在它起作用了。 :)

【解决方案1】:

看起来你正在使用字符串作为数据。

 data = {'col_A': [['1.222', '1.222', '1.333'], [], ['1.29.1', '1.1', '1.1']] ,
         'col_B': [['cla:pl:dr', 'cla:pl:dr'], ['clp:dp', 'xr.ld', 'xr.ld'], ['ru:pun', 'ru:pun', 'hm:dm']] }

 df = pd.DataFrame(data)
 df['col_A'] = df['col_A'].apply(lambda x: list(set(x)))
 df['col_B'] = df['col_B'].apply(lambda x: list(set(x)))

输出 DF

       col_A                 col_B
0   [1.222, 1.222, 1.333]   [cla:pl:dr, cla:pl:dr]
1   []                      [clp:dp, xr.ld, xr.ld]
2   [1.29.1, 1.1, 1.1]      [ru:pun, ru:pun, hm:dm]

OutPut DF(删除重复项后)

    col_A           col_B
0   [1.222, 1.333]  [cla:pl:dr]
1   []              [clp:dp, xr.ld]
2   [1.29.1, 1.1]   [ru:pun, hm:dm]

  • 关闭,肯定是列表,但我需要将列表中的值转换为字符串。
  • @purple_plop,列表里面的值都是字符串,否则无法创建这个df,对吧