Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AWS Athena中的递归字符串匹配和替换_Python_Sql_Replace_Presto_Amazon Athena - Fatal编程技术网

Python AWS Athena中的递归字符串匹配和替换

Python AWS Athena中的递归字符串匹配和替换,python,sql,replace,presto,amazon-athena,Python,Sql,Replace,Presto,Amazon Athena,我想从一个表到另一个表进行一些字符串查找,并在AWS Athena中执行字符串替换 以下是一个例子: 品牌办公室 顶级品牌 我想看看brand_和_office表中的代理商是否在top_brands表中的brand中找到,如果是,用brand替换代理商。所需的输出将是这样的 ID agency brand 1 PRD ROSEDALE PRD 2 RAINE & HORNE 3 RAY WHITE NORTH RAY WHITE 4

我想从一个表到另一个表进行一些字符串查找,并在AWS Athena中执行字符串替换

以下是一个例子:

品牌办公室

顶级品牌

我想看看brand_和_office表中的代理商是否在top_brands表中的brand中找到,如果是,用brand替换代理商。所需的输出将是这样的

ID  agency            brand
1   PRD ROSEDALE      PRD
2   RAINE & HORNE
3   RAY WHITE NORTH   RAY WHITE
4   MCGRATH AVONDALE
5   STONE ONEWA       STONE
6   STONE MARRYLAND   STONE
7   MILESTONE HOMES  
请注意,搜索应在整个单词上进行,这样里程碑房屋就不应映射到STONE。
在Python中,我使用两个for循环来实现映射,其中外部循环在代理上,内部循环在品牌上

import pandas as pd
import re

def string_found(string1, string2):
   if re.search(r"\b" + re.escape(string1) + r"\b", string2):
      return True
   return False

df = pd.read_csv('~/data/brand_and_office.csv')
brand_list = pd.read_csv('~/data/top_brands.csv')

for i in range(len(df)):
    for brand in brand_list['brand']:
        if string_found(brand, df.iloc[i]['agency']):
            df.iloc[i]['agency'] = brand
我的问题是:在AWS雅典娜,我该怎么做?我不想仅仅为了解决一个数据清理/转换问题而使用Python,因为它的其余部分都是在Athena中完成的

ID  agency            brand
1   PRD ROSEDALE      PRD
2   RAINE & HORNE
3   RAY WHITE NORTH   RAY WHITE
4   MCGRATH AVONDALE
5   STONE ONEWA       STONE
6   STONE MARRYLAND   STONE
7   MILESTONE HOMES  
import pandas as pd
import re

def string_found(string1, string2):
   if re.search(r"\b" + re.escape(string1) + r"\b", string2):
      return True
   return False

df = pd.read_csv('~/data/brand_and_office.csv')
brand_list = pd.read_csv('~/data/top_brands.csv')

for i in range(len(df)):
    for brand in brand_list['brand']:
        if string_found(brand, df.iloc[i]['agency']):
            df.iloc[i]['agency'] = brand