【问题标题】:How can I filter a list within a dataframe to contain only unique values?如何过滤数据框中的列表以仅包含唯一值?
【发布时间】:2020-11-27 22:33:45
【问题描述】:

我有一个名为“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)

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

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

【问题讨论】:

    标签: python list dataframe dictionary set


    【解决方案1】:

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

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

    【讨论】:

    • 效果很好,非常感谢!你也知道如何将其转换为字典吗?
    • 你想把什么转换成字典?
    • 如上所述,我应用了以下代码:``` CPC = CPC['sitc_product_code'].apply(lambda row : sorted(list(set(row)))) ```这给了我一个看起来与原始帖子非常相似的数据框。现在我想使用第一列中的位置代码作为字典的键,其中字典的每个元素都包含第二列中的列表,我该如何完成?
    • 我认为这与CPC.to_dict()有关
    • 它很简单:``` dictCPC = CPC.to_dict() ``` 效果很好。
    猜你喜欢
    • 2020-01-18
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2020-03-03
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多