我得到了一组子字符串。我需要找到数据框中特定列中所有这些子字符串的出现次数。相关的数据框看起来像这样
training['concat']
0 svAxu$paxArWAn
1 xvAxaSa$varRANi
2 AxAna$xurbale
3 go$BakwAH
4 viXi$Bexena
5 nIwi$kuSalaM
6 lafkA$upamam
7 yaSas$lipsoH
8 kaSa$AGAwam
9 hewumaw$uwwaram
10 varRa$pUgAn
我的子字符串集是一个字典,其中键是子字符串,值是它们出现的概率
reg = {'anuBavAn':0.35, 'a$piwra':0.2 ...... 'piwra':0.7, 'pa':0.03, 'a':0.0005}
#The length of dicitioanry is 2000
特别是我需要找到那些出现超过两次的子串
我编写了以下代码来执行该任务。是否有更优雅的 pythonic 方式或 panda 特定方式来实现与当前实现相同的方式需要相当长的时间来执行。
elites = dict()
for reg_pat in reg_:
count = 0
eliter = len(training[training['concat'].str.contains(reg_pat)]['concat'])
if eliter >=3:
elites[reg_pat] = reg_[reg_pat]
最佳答案
你可以使用apply
代替str.contains
,它更快:
reg_ = {'anuBavAn':0.35, 'a$piwra':0.2, 'piwra':0.7, 'pa':0.03, 'a':0.0005}
elites = dict()
for reg_pat in reg_:
if training['concat'].apply(lambda x: reg_pat in x).sum() >= 3:
elites[reg_pat] = reg_[reg_pat]
print (elites)
{'a': 0.0005}
关于pandas - 在 Pandas 数据框中查找一组子字符串的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39403678/