在python中将给定输入参数的数据帧输出重新命名为类

在python中将给定输入参数的数据帧输出重新命名为类,python,class,pandas,Python,Class,Pandas,我已经成功地创建了我的第一个类,包含两个方法,其中on保存数据,另一个对输入数据执行一组派生,给定了使用Pandas功能的相当简单的python代码。我用4个参数调用该类及其附属方法 我想要的是类的输出,一个Pandas数据帧,根据一个输入参数命名——一个字符串对象。这是因为推导是在输入数据中的单个数据列上进行的,并且将输出数据帧命名为与输入参数(即数据帧变量)相同的名称以供以后使用是可行的 下面给出了类(和代码)结构的粗略示例: class tool_swoe_iv: "docstring"

我已经成功地创建了我的第一个类,包含两个方法,其中on保存数据,另一个对输入数据执行一组派生,给定了使用Pandas功能的相当简单的python代码。我用4个参数调用该类及其附属方法

我想要的是类的输出,一个Pandas数据帧,根据一个输入参数命名——一个字符串对象。这是因为推导是在输入数据中的单个数据列上进行的,并且将输出数据帧命名为与输入参数(即数据帧变量)相同的名称以供以后使用是可行的

下面给出了类(和代码)结构的粗略示例:

class tool_swoe_iv:
"docstring"

    def __init__(self,data_in):
        self.data_in = data_in

    def swoe_iv(self, param1, param2):
        "code that executes calculations"

        # output table which I would like to be re-named to param1 so it can be called later on. 
        woe_holder 
当我调用该类时,我希望“woe_holder”数据帧与param1具有相同的名称。我的问题有意义吗?我来自一个SAS背景,在那里,输出数据的重新命名可以很容易地由一个带有名称后缀的宏变量完成

请注意,我对python编码中涉及类及其开发的更正式的部分非常陌生,老实说,对更标准的python编码也是如此


最好的是,

我认为您误解了python类方法的工作原理。以下是我认为您相信您的代码可以做到的:

#Create an instance of tool_swoe_iv
my_tool = tool_swoe_iv(5)

#Execute calculations
my_tool.swoe_iv(param1, param2)

#Now there exists a new dataframe called param1
这里缺少的是python函数返回值。例如:

def addition(x, y):
    return x + y
现在,如果您希望有一个保存加法结果的变量,您应该自己分配它,例如:

my_var = addition(1, 2)
而不是按照你建议的方式进行,使用一些类似于:

addition("myvar", 1, 2)
因此,使用原始示例,您的代码应该如下所示

 class tool_swoe_iv:
    "docstring"

    def __init__(self,data_in):
        self.data_in = data_in

    def swoe_iv(self, param2):
        "code that executes calculations"

        # output table which I would like to be re-named to param1 so it can be called later on. 
        return dataframe

my_tool = tool_swoe_iv(5)
param1 = my_tool.swoe_iv(param2)

您可以通过调用
locals()
globals()
函数直接修改变量字典。例如,
a=1
等于
locals()['a']=1

因此,您可以使用这些函数来实现您的想法:

globals()[param1] = woe_holder
但是,不建议这样做,因为您会将其分配给全局名称,而不是本地名称。(如果使用
locals()
,它将在函数返回时消失,因为它将是函数的局部变量。)最好将
woe_holder
返回给调用者,让调用者决定分配给哪个名称。例如,像这样调用
my_tool.swoe_iv

param1 = my_tool.swoe_iv(param2)
(在这种情况下,param1不能是对象。不要用引号将其括起来。)


这更具可读性。

您好。谢谢你的回答!我得到了直觉,我觉得这样看是有意义的,因为你是如何将类分配到param1中的。然后,我可以在代码的其余部分重用它,只需将该类重新分配给我想要执行计算的所有其他变量。