在 Pandas 系列中展平列表

Flattening lists inside a Pandas series

我有一个列表:

[[ambulance],[],[]]
[[truck],[bus],[],[company],[ambulance]]
[[bus],[],[],[]]

我正在尝试将其清理为:

[ambulance]
[truck,bus,company,ambulance]
[bus]

我尝试了 list.explode() 但仍然有空的 [] 并且其中有 2 个项目是重复的索引,例如:

1 [truck]
1 [bus]
1 []
1 [company]
1 [ambulance]

我该如何解决这个问题?

在你explode之后,使用.str[0]获取每个sub-list的第一个值,如果有none则为NaN,然后​​dropna,然后使用 groupby(level=0) + agg(list):

重建列表
df['l'] = df['l'].explode().str[0].dropna().groupby(level=0).agg(list)

输出:

>>> df
                                  l
0                       [ambulance]
1  [truck, bus, company, ambulance]
2                             [bus]

你可以 map sum

df['l'] = df['l'].map(lambda x : sum(x,[]))