在 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,[]))
我有一个列表:
[[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,[]))