在pandas中计算单元格中多个子字符串的出现次数

0 投票
1 回答
591 浏览
提问于 2025-04-18 12:57

我有一列数据,里面包含一些比较长的字符串。每个字符串里面可能会有一些特定的子字符串,比如'H 07'、'H 06'或者'F 13',这些子字符串可能会出现在数据框的某个单元格里,也可能不会。我想统计这些子字符串出现的次数,并把结果放到一个新的单元格里。

df.iloc[0,0]    
'rfgergerggr H 07 jgjg gjgj H 06 gjhgj  H 06 '. 

经过处理后,新的单元格应该显示

df.iloc[0,1]
{'H 07':1, 'H 06':2}

我想这可以通过使用str.contains来实现。但是我需要查找大约50个不同的子字符串,我想不出一个好的方法来寻找它们。

我觉得复杂的lambda函数可能能解决我的问题,但我不知道该怎么写。

到目前为止,我尝试过使用str.contains,但它只告诉我子字符串是否存在,并没有给我出现的次数。而且,要找到我感兴趣的所有50个子字符串,我每次都得调用str.contains。我觉得应该有更好的方法来做到这一点。

1 个回答

1

类似这样的:

substrs = [...]
def f(cell_value):
    return {k: v for k, v in ((s, cell_value.count(s)) for s in substrs) if v}
df.column.apply(f)

撰写回答