查找两个熊猫数据框之间的部分字符串匹配的最快方法

获得

我有两个基于位置的熊猫DataFrame。

df1:包含由完整地址组成的列,例如“英国伦敦伊灵埃文路”。地址格式不同。

df1.address[0] --> "Avon Road, Ealing, London, UK"

df2:仅包含英国城市,例如“伦敦”。

df2.city[5] --> "London"

给定完整地址,我想找到第一个数据框的城市。这样,这将在我的第一个数据帧上进行。

df1.city[0] --> "London"

方法1:对于df2中的每个城市,检查df1是否具有这些城市,并将df1和df2的索引存储在列表中。

我不确定如何执行此操作,但是我假设我将使用此代码来找出是否存在部分字符串匹配并找到索引的位置:

df1['address'].str.contains("London",na=False).index.values  

方法2:对于每个df1地址,检查是否有任何单词与df2中的城市匹配并将df2的值存储在列表中。

我认为这种方法更直观,但是计算上会更昂贵吗?假设df1具有数百万个地址。

抱歉,这是一个愚蠢或简单的问题!指向最有效代码的任何方向都将有所帮助:)

杰罗姆·理查德

方法2确实是一个好的开始。但是,使用Python字典而不是列表应该更快。这是示例代码:

cityIndex = set(df2.city)

addressLocations = []
for address in df1.address:
    location = None
    # Warning: ignore characters like '-' in the cities
    for word in re.findall(r'[a-zA-Z0-9]+', address):
        if word in cityIndex:
            location = word
            break
    addressLocations.append(location)
df1['city'] = addressLocations

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在熊猫数据框中对两个字符串进行模糊匹配的最快方法

熊猫数据框之间的部分字符串匹配

查找R中两个向量之间的部分匹配字符串

如何合并/连接两个具有部分字符串匹配的列的数据框?

查找熊猫数据框中两个相关列之间的不匹配

在熊猫中合并两个数据框时如何“模糊”匹配字符串

根据两个数据帧之间的部分字符串检索匹配的行

Python:检查两个列表之间的字符串是否部分匹配

Python匹配两个列表之间的列表元素中的部分字符串

查找两个文件之间的子字符串匹配

通过python中的regex优化查找两个列表之间的匹配子字符串

比较两个数据框列以匹配字符串或子字符串,然后以大熊猫计数

grep完全匹配字符串的两个部分

查找两个不同数据框的列之间的部分匹配项,并在找到匹配项时分配值

如何使用Python合并或连接带有字符串的两个熊猫数据框

查找两个“ /”之间的子字符串

匹配两个符号之间的字符串并替换

获取数据框中两个给定单词之间的子字符串

Python:比较两个excel表之间的列字符串并找到匹配的列并写入另一个数据框

数据框R-查找字符串的一部分并返回某些两个值

如何在数据框中为列查找具有相同值(字符串)的两个连续行并在它们之间添加更多行?

在两个不同的数据集中对字符串进行部分匹配以获得更高频率的匹配

Python字符串提取:提取两个预定义字符串之间的部分

python如何在两个不相等大小的列之间匹配部分字符串

R中的正则表达式提取两个匹配字符串之间的部分(非意图)

匹配字符串中两个索引之间的子字符串

在两个匹配的字符串之间选择子字符串

在两个已知字符串之间匹配href任意字符串

比较两个数据框列以匹配字符串或者是子字符串然后在熊猫中计数(需要速度版)