我有一个这样的数据框,
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 循环。
答案 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
。