将Python脚本翻译成用户定义的函数

问题描述 投票:0回答:1

我有一大块 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'
           )

当我调用该函数时,它输出几个错误 我需要帮助

python pandas function faker
1个回答
0
投票

根据您提供的代码,您似乎正在尝试定义一个名为dynamic_var()的函数来使用Faker库生成合成列。然而,代码中有几个问题需要解决。让我们一一回顾一下:

  1. 缩进问题:dynamic_var()函数内的代码缩进不一致。请确保缩进正确,以避免任何语法错误。以下是代码的更正版本:

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
  1. 缺少导入语句:在函数中,您引用了 faker.providers 模块中的 DynamicProvider 类,但似乎您忘记导入它。请在脚本开头添加以下导入语句:

    从 faker.providers 导入 DynamicProvider

  2. 未解析的引用:函数内引用了变量 gen、faker 和 df。确保在调用函数时将它们定义或作为参数传递给函数。

  3. 列名称:在函数中,您将provider_name分配给gen.col(provider_name). Generation_method = faker.provider_name。看起来您正在尝试动态设置provider_name列的生成方法,但变量provider_name应该是实际的列名称,而不是字符串“provider_name”。您可能需要做出相应的调整。

通过解决这些问题,您应该能够调用dynamic_var()函数而不会遇到错误。请记住提供必要的参数并确保预先定义必要的模块和变量。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.