我有一大块 python 脚本,我需要对其进行功能化以使我能够自动执行任务。 下面的脚本旨在使用 faker 库生成一个列,但因为我有许多 calcategori 变量需要镜像到合成数据中,所以我需要创建一个函数
import pandas as pd
from faker import Faker
from faker.providers import DynamicProvider
year = df.loc['categories', 'year']
list_year = list(year.
replace("'", "").
replace(",", "").
replace("[","").
replace("]", "").
split(' ')
)
year_provider = DynamicProvider(
provider_name="year_prov",
elements= list_year
)
faker.add_provider(year_provider)
gen.col("year").generation_method = faker.year_prov
以下是我的功能:
col_name = 'year'
provider_name = "year_prov"
def dynamic_var(dataframe,
categories,
col_name
):
var = dataframe.loc[categories]
list_var = list(var.
replace("'", "").
replace(",", "").
replace("[","").
replace("]", "").
split(' ')
)
year_provider = DynamicProvider(
provider_name = provider_name,
elements = list_var
)
faker.add_provider(year_provider)
gen.col(provider_name).generation_method = faker.provider_name
return gen.col(col_name).generation_method
然后调用该函数
dynamic_var(dataframe = df,
categories = ('categories', 'year_ashe'),
col_name = 'year_col'
)
当我调用该函数时,它输出几个错误 我需要帮助
根据您提供的代码,您似乎正在尝试定义一个名为dynamic_var()的函数来使用Faker库生成合成列。然而,代码中有几个问题需要解决。让我们一一回顾一下:
col_name = '年份' 提供商名称=“年份省”
def dynamic_var(dataframe, categories, col_name):
var = dataframe.loc[categories]
list_var = list(var
.replace("'", "")
.replace(",", "")
.replace("[","")
.replace("]", "")
.split(' ')
)
year_provider = DynamicProvider(
provider_name=provider_name,
elements=list_var
)
faker.add_provider(year_provider)
gen.col(provider_name).generation_method = faker.provider_name
return gen.col(col_name).generation_method
缺少导入语句:在函数中,您引用了 faker.providers 模块中的 DynamicProvider 类,但似乎您忘记导入它。请在脚本开头添加以下导入语句:
从 faker.providers 导入 DynamicProvider
未解析的引用:函数内引用了变量 gen、faker 和 df。确保在调用函数时将它们定义或作为参数传递给函数。
列名称:在函数中,您将provider_name分配给gen.col(provider_name). Generation_method = faker.provider_name。看起来您正在尝试动态设置provider_name列的生成方法,但变量provider_name应该是实际的列名称,而不是字符串“provider_name”。您可能需要做出相应的调整。
通过解决这些问题,您应该能够调用dynamic_var()函数而不会遇到错误。请记住提供必要的参数并确保预先定义必要的模块和变量。