У меня есть список:
[[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]
, чтобы получить первое значение каждого подсписка или 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,[]))