[英]Python - Running through the same code block in a loop for different variable
我有下面的一组代码,我在从名为df
的源 Dataframe 提取一些数据后执行一些操作。
Customer_data = []
for i in range(0, len(df)):
try:
Customer = (re.search(r'(Customer"=>).*?(,)', df[i]).group(0).split('=>')[1].replace('"','').replace(',',''))
except:
Customer = ''
Customer_data.append(Customer)
Customer = pd.DataFrame(Customer_data.append, columns = ['Customer'])
我试图为一组变量重复上述代码,其中我将用另一个变量替换变量Customer
。 我怎样才能概括上面的代码,以便它可以在循环中重复用于其他变量。
示例变量: Product
, ModelName
您可以将正则表达式定义为字符串,在其中添加来自变量的列名。 最后将该正则表达式传递给re.search
:
col_name = "Customer"
my_regex = r"('+re.escape(col_name)+'=>).*?(,)"
Customer_data = []
for i in range(0, len(df)):
try:
Customer = (re.search(my_regex, df[i]).group(0).split('=>')[1].replace('"','').replace(',',''))
except:
Customer = ''
Customer_data.append(Customer)
Customer = pd.DataFrame(Customer_data.append, columns = ['Customer'])
您可以将它放在 function 中,您可以在其中传递变量的名称字符串(如 DataFrame 中所示)。 只需更改搜索部分以包含正确的名称r'({}"=>).*?(,)'.format(name)
。
def my_func(df, name):
Customer_data = []
for i in range(0, len(df)):
try:
Customer = (re.search(r'({}"=>).*?(,)'.format(name), df[i]).group(0).split('=>')[1].replace('"','').replace(',',''))
except:
Customer = ''
Customer_data.append(Customer)
Customer = pd.DataFrame(Customer_data.append, columns = ['Customer'])
return Customer
# run function
Product = my_func(df, 'Product')
ModelName= my_func(df, 'ModelName')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.