繁体   English   中英

从列表类型 pandas 列中删除重复项

[英]Remove duplicates from list type pandas column

我有一个这样的数据框,

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]

As.drop_duplicates() 在这里不起作用,正在寻找一些 pandas 解决方案,以便比使用 for 循环更有效地执行此操作。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM