Сглаживание списков внутри серии Pandas

У меня есть список:

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

И я пытаюсь очистить это, чтобы:

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

Я пробовал list.explode(), но у меня все еще пусто [], а там, где есть 2 элемента, его индекс дублируется, например:

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

Как я могу это исправить?

1
0
22
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

После того, как вы 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]

Можно просто mapsum

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

Другие вопросы по теме