从列表类型熊猫列中删除重复项

时间:2021-04-26 17:39:12

标签: python pandas dataframe

我有一个这样的数据框,

df
col1        col2
[1,2,3]     [4,5]
[1,2,3]     [6,7]
[4,5,6]     [8,9]
[9,8,7,1]   [1,2]
[9,8,7,1]   [3,4]

现在我想从 col1 中删除重复项,并保留第一行重复值,以便数据框看起来像,

col1        col2
[1,2,3]     [4,5]
[4,5,6]     [8,9]
[9,8,7,1]   [1,2]

因为 .drop_duplicates() 在这里不起作用,正在寻找一些 Pandas 解决方案来更有效地执行此操作,而不是使用 for 循环。

1 个答案:

答案 0 :(得分:3)

我们可以尝试将 col1 中的列表映射到 tuple,然后我们可以使用 duplicated 创建一个可用于过滤行的布尔掩码

df[~df['col1'].map(tuple).duplicated()]

           col1   col2
0     [1, 2, 3]  [4,5]
2     [4, 5, 6]  [8,9]
3  [9, 8, 7, 1]  [1,2]

PS:要使 drop_duplicates 起作用,列中的值必须是 hashable 或换句话说 immutable

相关问题