gpt4 book ai didi

python - 在函数内部访问数据框

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:51 25 4
gpt4 key购买 nike

我想编写一个类似于以下代码的模块。这些函数存储在一个单独的文件中。

def function_1(arg):
x1, x2= arg
x3, x4= dataframe.loc[index, column_list]
d1, d2 = some computation
return (d1, d2)

def function_2(arg):
y1, y2= arg
y3, y4= dataframe.loc[index, column_list]
d1, d2= function_1(arg)
return (a pair of non-linear functions)

def function_3(dataframe):
data_preprocess
x, y = fsolve(function_2, initial_values)
some process
return (a new dataframe)

在主函数中,我导入了这个模块,然后将数据传递给 function_3,如下所示。

dataframe=read_csv(directory)
some data preprocess
dataframe = function_3(dataframe)

但是,我收到以下错误消息:

NameError: name 'dataframe' is not defined in 'function_2'

以下是我的想法。

  1. 可能在“function_2”和“function_1”中使用关键字“global”无济于事,因为它们会引用“main”中的“dataframe”;
  2. 关键字“nonlocal”也无济于事,因为它没有写在嵌套方式;
  3. 如果将数据框添加为参数,是否会影响“fsolve”?

如有错误请指正。我应该如何更改我的代码?

最佳答案

您的想法准确而切题。你只需要一个额外的步骤来完成它们。将一个额外的参数传递给 function2 并将传递给 fsolve 的版本包装在 lambda 中> 或可访问 function3 命名空间的嵌套 def:

...def function_2(dataframe, arg):    ...def function_3(dataframe):    # data_preprocess    x, y = fsolve(lambda arg: function_2(dataframe, arg), initial_values)    ...# ORdef function_3(dataframe):    def fn(arg): return function_2(dataframe, arg)    # data_preprocess    x, y = fsolve(fn, initial_values)    ...

关于python - 在函数内部访问数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47544790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com