首页 > 解决方案 > 如何过滤数据框中的列表以仅包含唯一值?

问题描述

我有一个名为“CPC”的数据框,如下所示:

location_code  sitc_product_code                                                 
ABW            [0711, 0711, 6996, 6996, 7284, 7492, 7492, 749...
AFG            [0711, 1110, 7188, 7284, 7284, 7423, 7423, 749...
AGO            [0711, 0711, 0711, 0711, 0711, 0711, 0711, 699...
AIA            [7188, 7492, 8743, 8947, 7641, 7649, 7783, 778...
ALB            [0585, 1110, 7188, 7239, 7239, 7239, 7492, 749...
...                                                          ...
WSM            [7284, 7284, 7284, 0341, 0341, 0341, 6424, 682...
YEM            [0711, 0711, 0711, 0711, 0711, 0711, 1110, 699...
ZAF            [0585, 0585, 0585, 0585, 0585, 0585, 0585, 058...
ZMB            [0711, 0711, 0711, 0711, 0711, 0711, 0711, 071...
ZWE            [0585, 0585, 0585, 0585, 0585, 0585, 0585, 058...

数据框的第二列,标题为“sitc_product_code”,每行包含一个列表。目前,每个列表都包含重复的条目,例如 ABW 行包含两次“0711”和两次“6996”。如何过滤每行中的列表以仅包含唯一值?

我试过这样的事情:

CPC['sitc_product_code'] = set(CPC.sitc_product_code)

这没有用。这真的难倒我,所以我真的很感激一些帮助。

后续问题,一旦此数据框中的列表仅包含唯一值,我如何将数据框转换为字典,以使位置代码成为键?

标签: pythonlistdataframedictionaryset

解决方案


你必须申请set每一行。您可以使用 :

CPC['sitc_product_code'].apply(lambda row : list(set(row)))


推荐阅读