Списки внутри фреймов данных python

#python #list #dataframe #twitter

Вопрос:

Я работаю с твитами, и у меня есть фрейм данных со списками строковых элементов:

 df = pd.DataFrame([('parrot', [], 'tweet'),   
                    ('lion',  ["covid"], 'tweet'),  
                    ('monkey', ["covid", "gripe"] , 'tweet')],  
                  columns=('name_user', 'hashtags', 'full_text'))  
 

Я хочу сгенерировать фильтры на основе элементов внутри столбца «хэштеги».

Есть ли способ извлечь все пустые списки или все списки, в которых есть содержимое?

Я хотел бы извлечь что — то вроде этого:

 name_user         hashtag         
parrot             []  
 

или вот так:

 name_user         hashtag         
lion              ["covid"]   
monkey            ["covid", "gripe"]
 

Ответ №1:

Пустые:

 df[df['hashtags'].apply(lambda x: len(x)) == 0]
 

Непустые:

 df[df['hashtags'].apply(lambda x: len(x)) != 0]
 

Ответ №2:

Вы могли бы попробовать astype(bool) :

 print(df.loc[df['hashtags'].astype(bool)])
 

Выход:

   name_user        hashtags full_text
1      lion         [covid]     tweet
2    monkey  [covid, gripe]     tweet
 

Для пустых списков:

 print(df.loc[~df['hashtags'].astype(bool)])
 

Выход:

 name_user hashtags full_text
0    parrot       []     tweet