在pandas中计算单元格中多个子字符串的出现次数
我有一列数据,里面包含一些比较长的字符串。每个字符串里面可能会有一些特定的子字符串,比如'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)