鉴于下面的Pandas系列:
0 [ID01]
1 [ID02]
2 [ID05, ID08]
3 [ID09, ID56, ID32]
4 [ID03]
目标是获得如下所示的单个列表:
[ID01, ID02, ID05, ID08, ID09, ID56, ID32, ID03]
如何在Python中以pythonic方式实现这一目标?
答案 0 :(得分:3)
假设这是一个pandas.Series
对象
完整列表
np.concatenate(s).tolist()
唯一列表
np.unique(np.concatenate(s)).tolist()
如果元素是列表,则工作。如果它们是numpy数组则不起作用。
完整清单
s.sum()
唯一列表
pd.unique(s.sum()).tolist()
完整列表
[x for y in s for x in y]
唯一列表(谢谢@pault)
list({x for y in s for x in y})
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