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

时间:2016-01-15 07:33:44

标签: python class pandas

我设法创建了我的第一个类,包含两个方法,其中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编码。

最佳,

2 个答案:

答案 0 :(得分:0)

我认为你误解了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)

答案 1 :(得分:0)

您可以通过调用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不能成为一个对象。不要用引号括起来。)

这更具可读性。