Создание оператора IF для столбца на основе NaN

#python #pandas

#python #панды

Вопрос:

Вот пример моих данных.

   df[['caption', 'mentions']].sample(7)
    
    
      caption                                             mentions
    42  b'Alexa is helping people of all abilities do ...   NaN
    48  NaN NaN
    7   b'Introducing Amazon Pharmacy. :pill::clipboar...   NaN
    25  b"When it's day:victory_hand_selector:and the ...   charliesmallsthedood
    58  b'We look at all angles when it comes to safet...   NaN
    88  b'A night in with your favorite food   pup   e...   amazonfiretv,lissettecalv
    22  b'Get everyday essentials auto-delivered AND s...   NaN
 

Я хочу создать столбец, который подсчитывает количество упоминаний в заголовке. Для приведенного выше примера он вернет (0,0,0,2,0,1,0)

Вот что я пробовал до сих пор:

 mentions = df['mentions'].str.lower().str.split(',')

for value in df['mentions']:
    if value != 'nan':
        df['mention_counts'] = mentions.apply(len)
    else:
        df['mention_counts'] = 0
 

Помогите, пожалуйста!

Комментарии:

1. Что происходит? Вы получаете сообщение об ошибке?

Ответ №1:

Проще всего было бы явно записать вашу функциональность как so —

 def count_thing(row):
    if type(row.mentions) == str:
        return len(row.mentions.split(','))
    elif np.isnan(row.mentions):
        return 0
    else:
        pass # not sure how you want to deal with this case...
 

а затем используйте apply для получения требуемого столбца:

 df['mention_counts'] = df.apply(count_thing, axis=1)
 

С другой стороны, я не вижу никаких причин для использования lower , поскольку вы разделяете , то, что не влияет…