Как удалить из столбца строку с пустым списком?

Дан датафрейм:

d = {'name': [['rick', 'mike', 'morty'], [], ['brick', 'nick'], ['rick', 'reaven', 'bart', 'homer'], ['rick', 'morty']],
     'Date': ['11/05/2011', '9/02/2010', '1/01/2014', '12/20/2020', '9/30/2009'],
     'Address': ['AR', 'YU', 'RU', 'EU', 'BY']}
df = pd.DataFrame(data = d)

Как удалить строку с пустым списком?


Ответы (4 шт):

Автор решения: magistar

Если вам нужно удалить сам список, то можно с помощью цикла for таким образом:

for i in d['name']:
    if len(i) == 0:
        del d['name'][d['name'].index(i)]

Обратите внимание, что если пустых списков будет больше одного, то это не сработает. Уточните, если необходимо удалить произвольное количество пустых списков.

Если нужно удалить из словаря весь ключ, где находится пустой список, со всеми значениями:

flag = False
for i in d:
    for j in d[i]:
        if len(j) == 0:
            del d[i]
            flag = True
            break
    if flag:
        break
→ Ссылка
Автор решения: MaxU - stop genocide of UA

Воспользуйтесь методом Series.str.len():

res = df.loc[df["name"].str.len().gt(0)]

результат:

In [104]: res
Out[104]:
                          name        Date Address
0          [rick, mike, morty]  11/05/2011      AR
2                [brick, nick]   1/01/2014      RU
3  [rick, reaven, bart, homer]  12/20/2020      EU
4                [rick, morty]   9/30/2009      BY
→ Ссылка
Автор решения: CrazyElf

Можно через apply применить len и потом проверить, что длина списка не нулевая:

df = df[df['name'].apply(len) > 0]

df после этого:

    name                        Date        Address
0   [rick, mike, morty]         11/05/2011  AR
2   [brick, nick]                1/01/2014  RU
3   [rick, reaven, bart, homer] 12/20/2020  EU
4   [rick, morty]                9/30/2009  BY
→ Ссылка
Автор решения: SergFSM

вот так еще тоже работает:

df.loc[df.name.astype(bool)]
'''
                          name        Date Address
0          [rick, mike, morty]  11/05/2011      AR
2                [brick, nick]   1/01/2014      RU
3  [rick, reaven, bart, homer]  12/20/2020      EU
4                [rick, morty]   9/30/2009      BY
→ Ссылка