如何将值为列表的Series的值折叠为唯一列表

时间:2018-04-06 19:57:49

标签: python pandas series

鉴于下面的Pandas系列:

0 [ID01]
1 [ID02]
2 [ID05, ID08]
3 [ID09, ID56, ID32]
4 [ID03]

目标是获得如下所示的单个列表:

[ID01, ID02, ID05, ID08, ID09, ID56, ID32, ID03]

如何在Python中以pythonic方式实现这一目标?

1 个答案:

答案 0 :(得分:3)

假设这是一个pandas.Series对象

选项1

完整列表

np.concatenate(s).tolist()

选项1.1

唯一列表

np.unique(np.concatenate(s)).tolist()

选项2

如果元素是列表,则工作。如果它们是numpy数组则不起作用。
完整清单

s.sum()

选项2.1

唯一列表

pd.unique(s.sum()).tolist()

选项3

完整列表

[x for y in s for x in y]

选项3.1

唯一列表(谢谢@pault)

list({x for y in s for x in y})

@ Wen的选项

list(set.union(*map(set, s)))

设置

s = pd.Series([
    ['ID01'],
    ['ID02'],
    ['ID05', 'ID08'],
    ['ID09', 'ID56', 'ID32'],
    ['ID03']
])

s

0                [ID01]
1                [ID02]
2          [ID05, ID08]
3    [ID09, ID56, ID32]
4                [ID03]
dtype: object