如何获取包含列表或值的列pandas的唯一值? 我的专栏:
column | column
test | [A,B]
test | [A,C]
test | C
test | D
test | [E,B]
我想要那样的列表:
list = [A, B, C, D, E]
谢谢
答案 0 :(得分:1)
您可以应用pd.Series
分割列表,然后stack
和unique
。
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']]
))