Pandas 在这段代码中,lambda函数在summary col的info_dict参数中做什么?
我正在对一组标准的OLS回归进行汇总统计。这段代码是我的教授写的,我正试图弄清楚代码的某一部分到底发生了什么Pandas 在这段代码中,lambda函数在summary col的info_dict参数中做什么?,pandas,lambda,Pandas,Lambda,我正在对一组标准的OLS回归进行汇总统计。这段代码是我的教授写的,我正试图弄清楚代码的某一部分到底发生了什么 summary_col( [reg0,reg1,reg2,reg3], stars=True, float_format='%0.2f', info_dict = { 'N':lambda x: "{0:d}".format(int(x.nobs)), 'R2'
summary_col(
[reg0,reg1,reg2,reg3],
stars=True,
float_format='%0.2f',
info_dict = {
'N':lambda x: "{0:d}".format(int(x.nobs)),
'R2':lambda x: "{:.2f}".format(x.rsquared)
})
我查了lambda函数。我对它们的工作原理有相当好的了解。我确实理解的代码的各个方面:
info\u dict
是一个值字典,如果您希望将它们包含在摘要统计数据中,可以调用它:
,并列出要执行的操作(即x+5),如果您已经知道要运行的参数,则可以在第二次“:
”之后放入列表{0:d}
将四舍五入为整数,这对于观察非常有意义。虽然我不知道为什么你不能说{%.f}
。可能是因为前者返回一个显式int,而后者返回一个看起来像int的浮点{.2f}
将返回小数点后两位的浮点值somestring.format()
的作用。不知何故,x
被定义为我相信的回归结果,x.nobs
是变量“观察次数”。类似于x.rsquared
有人能帮我填补公式中的空白吗?lambda函数使其能够为每个单独的回归提取数据,这到底是怎么回事 让我们稍微把这句话讲一下,让大家明白发生了什么:
summary_col(
[reg0,reg1,reg2,reg3],
stars=True,
float_format='%0.2f',
info_dict={
'N':lambda x: "{0:d}".format(int(x.nobs)),
'R2':lambda x: "{:.2f}".format(x.rsquared)
}
)
summary\u col
对象正在接受一些输入,第一个参数是回归对象的列表,[reg0,reg1,reg2,reg3]
。然后有三个命名参数,stars
,float\u format
,和info\u dict
。当我们传入回归对象列表作为第一个参数时,我相信lambda函数知道将匿名函数应用于每个对象。因此,info\u dict
所做的就是创建一个字典,其中包含两个键,N
和R2
,它们映射到字符串。当成员x.nobs
和x.rsquared
在lambda函数中被引用时,由于使用它们的上下文,它们将应用于回归对象
如果您尝试在回归对象中不存在的代码行中使用lambda,几乎肯定会出错。密钥位于应用lambda的上下文中
关于lambda函数上下文的一个很好的例子是迭代字典并按键和值排序
# sort the dict by value first, and key second...
# x is inferred from the context (my_dict.items())
for key, value in sorted(my_dict.items(), key=lambda x: (x[1], x[0]):
print(key, value)
这两种格式都返回字符串,它们不返回int
或float
对象。