我有一个大约 50k 字符串的数据框,其中包含像这样的城市名称的一些变体。
城市 | 变化 |
---|---|
新德里 | 新德里 |
新德里 | 德里 |
新德里 | 迪利 |
新德里 | nayi dilli |
班加罗尔 | 班加罗尔 |
班加罗尔 | blr |
班加罗尔 | 班加罗尔 |
迈索尔 | mysuru |
迈索尔 | mysur |
迈索尔 | 迈索尔 |
迈索尔 | mysor |
我有一个倒排索引(200 万个变化),它是从存在变化的较大数据集中创建的类似但嘈杂的变化。我想计算上表中的每个变体至少部分出现在较大数据集中的次数。
查找表:
city_variations | 指数 | 计数 |
---|---|---|
新迪利#num | [2,3,51,44,33] | 5 |
新迪利普莱斯 | [231,3,11,44] | 4 |
纽约 | [1231,2211] | 2 |
#num new dilli##num | [211,4223,532] | 3 |
我期待我的结果包含
new dilli -> new dilli #num, new dilliplace and #num new dilli##num
我的代码也在下面添加,这有效,但需要永远!有人可以建议我优化它的方法吗?
def if_contains(pattern,df,col,sum_col):
return df[df[col].str.contains(pattern)][sum_col].sum()
inputs['count_of_vns_with_pattern']=inputs.apply(lambda x:if_contains(x['variation'],inv_index,'city_variations','No.of times present in inv index'),axis=1)