我设法创建了我的第一个类,包含两个方法,其中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编码。
最佳,
答案 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不能成为一个对象。不要用引号括起来。)
这更具可读性。