Нахождение количества вхождений определенной строки в столбце - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь подсчитать количество слов, в которых есть строка: «вешалка» из столбца «Описание».Поэтому я определил функцию:

def hanger_count(title): 
if 'hanger' in title.lower().split():
    return True
else:
    return False

, которая, казалось, работала правильно, когда я тестировал ее со строкой.Но когда я попытался запустить функцию через столбец данных, используя функцию:

ecomm['Description'].apply(hangercount)

, я получил сообщение об ошибке:

AttributeError: 'float' object has no attribute 'lower'

Я думаю, проблема в том, что Python видитнекоторые строки в столбце как объекты, а не строки, есть ли способ, которым я могу преобразовать это?

Как вы думаете, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Вы можете просто сделать следующее, используя str.contains() и count():

df[df['Description'].str.contains('hanger', case=False, na=False)].count()
0 голосов
/ 01 октября 2018

У вас в столбце смешанные типы данных, и поскольку lower() - это только метод для строк, вы получаете сообщение об ошибке, когда pandas пытается вызвать функцию с числовым значением (в данном случае с плавающей запятой).

Эта быстрая настройка может работать на вас:

def hanger_count(title): 
    if 'hanger' in str(title).lower().split():
        return True
    else:
        return False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...