查找列中特定字符串的出现次数

时间:2018-10-01 15:49:10

标签: python pandas dataframe data-analysis

我正在尝试从“描述”列中计算包含字符串:“ hanger”的单词的数量。所以我定义了一个函数:

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

当我用字符串测试它时,似乎可以正常工作。但是,当我尝试通过data列运行该函数时,请使用以下函数:

ecomm['Description'].apply(hangercount)

我收到了一个错误消息:

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

我认为问题在于python将列中的某些行视为对象而不是字符串,我有什么办法可以转换它?

您认为我做错了什么?

2 个答案:

答案 0 :(得分:4)

您的列中似乎有混合的数据类型,并且由于lower()仅是用于字符串的方法,因此当pandas尝试以数字值(在这种情况下为float)调用该函数时,会收到错误消息)。

此快速调整可能对您有用:

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

答案 1 :(得分:3)

您可以使用str.contains()count()进行以下操作:

df[df['Description'].str.contains('hanger', case=False, na=False)].count()