首页 > 解决方案 > 从其中一列是列表类型的 pd 数据框中选择不同的值

问题描述

我有一个表,其中一列是列表类型。我想从表中选择不同的值:

pd.DataFrame(
        {
            "a": ["1", "2", "1"],
            "b": [['a', 'b'], ['c', 'd'], ['a', 'b']],
        }
    )

结果应仅包含上表中的前两行。

我尝试了 pandas unique 和 drop_duplicates 但它们似乎无法处理列表类型的列。

标签: pythonpandas

解决方案


您可以先将列表转换为元组,.drop_duplicates然后再应用:

df['b'] = df['b'].apply(tuple)
df = df.drop_duplicates()
print(df)

印刷:

   a       b
0  1  (a, b)
1  2  (c, d)

要将元组转换回列表:

df['b'] = df['b'].apply(list)

推荐阅读