我的问题是有效地使用正则表达式模式来查找两个熊猫之间的匹配,从excel文件中提取df如何有效地匹配pandas数据框中两列之间的正则表达式模式?
首先,感谢您花时间看看我的问题。我对Python非常陌生,在使用它来处理大型数据集时更是如此。我知道我应该使用堆栈作为最后的手段。
现在,我正在靠墙撞我的头,这可能很简单。
问题: 我有两个Excel文件:
一个只有1列* 300行=原始网址
另一种可能是从20K非常大,更多的翻译网址
目的: 我有原始的网址,我必须找到他们的翻译对应,在大的Excel文件。
两个网址之间的唯一的共通点是一个8位的网址某处数
我曾经想过合并,但它不会工作,因为它是一个部分匹配(以最好的我知识。) 我发现了一个潜在的有趣的解决方案:.where这可以让我做我想做的。然而,我得到这个错误:
master_list [“翻译”] = crawlfr.url.where(number_search.search(master_list).group(0)== number_search.search(crawl_fr).group(0),master_list。 url) TypeError:期望的字符串或缓冲区
据我了解这个错误,问题可能来自正则表达式,似乎并没有采取任何东西,但字符串。
事实上,当我通过提取匹配对象的函数来比较两个字符串时,它可以工作。
def skl_finder(master_list,crawl_fr):
skl_search=re.compile("\d{8}")
if skl_search.search(master_list).group(0) ==
skl_search.search(crawl_fr).group(0):
return skl_search.search(master_list).group(0)
我认为这个问题是非常接近我想要做的,但它没有任何回复:Pandas: Comparing two dataframes with identical data structure but differences in data using pattern matching
import regex as re
import pandas as pd
crawl_loc="translated_file_set.xlsx"
master_list_loc="original_fileset.xlsx"
crawlfr=pd.read_excel(crawl_loc,parse_cols="E")
master_list=pd.read_excel(master_list_loc)
number_search=re.compile("\d{8}")
master_list["translated"] =
crawlfr.url.where(number_search.search(master_list).group(0) ==
number_search.search(crawl_fr).group(0), master_list.url)
master_list.to_excel("result_file.xlsx")
不清楚您的问题是什么,速度是多少?国际海事组织可以预先计算搜索关键字,即提取文件中的数字并将其转换为整数作为新列,然后搜索它们。 – georgexsh
速度和如何应用两列之间的正则表达式。如上所述,我有正则表达式的错误,在这种情况下我无法找到工作解决方案来使用两列之间的匹配模式。 –
将excel转换为字符串列表,计算它们上的搜索关键字,将更容易与您不熟悉的pandas IMO进行比较。 – georgexsh