当 def 中的一个变量需要调用与模块相关的东西时,我该如何编写函数定义?
可实施的例子:
df 是一个包含一些列的数据库:
Loc Day A B
1 1 2 4
1 2 4 2
2 3 7 9
3 4 1 9
操作代码:
import pandas as pd
from labellines import labelLine, labelLines
from linearmodels.panel import PanelOLS
import statsmodels.api as sm
df = pd.DataFrame({"Loc":[1,1,2,3],"Day":[1,2,3,4],"A":[2,4,7,1],"B":[4,2,9,9]})
def Panel_Regression():
data = df
day = pd.Categorical(data.Day)
data = data.set_index(["Loc", "Day"])
data["Day"] = day
exog_vars = ["B"]
exog = sm.add_constant(data[exog_vars])
mod = PanelOLS(data.A, exog, entity_effects=True, time_effects=True, drop_absorbed=True)
fe_te_res = mod.fit()
print(fe_te_res)
Panel_Regression()
这是可操作的,但我想在我的“Panel_Regression”函数定义中添加条目。这样我就可以在一个循环中多次调用它。
当我尝试将“data.A”放入“Panel_Regression”时,我的问题就出现了,如下所示:
def Panel_Regression(my_variable):
data = df
day = pd.Categorical(data.Day)
data = data.set_index(["Loc", "Day"])
data["Day"] = day
exog_vars = ["B"]
exog = sm.add_constant(data[exog_vars])
mod = PanelOLS(data.my_variable, exog, entity_effects=True, time_effects=True, drop_absorbed=True)
fe_te_res = mod.fit()
print(fe_te_res)
Panel_Regression("A")
我收到错误:“'DataFrame' 对象没有属性 'my_variable'”
我也试过: Panel_Regression(data.A)
...但这也不起作用,因为“数据”仅在def中定义,因此尝试将其从函数定义中取出也行不通。
我想我错过了一些关于如何从我自己的定义中调用它的基本知识。另外,如果有更好的方法来命名这篇文章,我很乐意改变它。
谢谢!