如何获取包含列表或值的列pandas的唯一值?

时间:2018-06-11 15:42:42

标签: python pandas

如何获取包含列表或值的列pandas的唯一值? 我的专栏:

column   |  column
test     |  [A,B]
test     |  [A,C]
test     |    C 
test     |    D
test     |   [E,B]

我想要那样的列表:

list = [A, B, C, D, E]

谢谢

2 个答案:

答案 0 :(得分:1)

您可以应用pd.Series分割列表,然后stackunique

import pandas as pd
df = pd.DataFrame({'col': [['A', 'B'], ['A', 'C'], 'C', 'D', ['E', 'B']]})

df.col.apply(pd.Series).stack().unique().tolist()

输出

['A', 'B', 'C', 'D', 'E']

答案 1 :(得分:1)

您可以使用展平功能Credit @wim

import collections

def flatten(l):
    for i in l:
        if isinstance(i, collections.abc.Iterable) and not isinstance(i, str):
            yield from flatten(i)
        else:
            yield i

然后使用set

list(set(flatten(df.B)))

['A', 'B', 'E', 'C', 'D']

设置

df = pd.DataFrame(dict(
    B=[['A', 'B'], ['A', 'C'], 'C', 'D', ['E', 'B']]
))