这段代码中的summb_col的info_dict参数中的lambda函数是做什么的?

时间:2019-01-25 21:42:24

标签: 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':lambda x: "{:.2f}".format(x.rsquared)
        })

我查找了lambda函数。我对它们的工作方式有相当不错的了解。我确实了解的代码方面:

  1. info_dict是值的字典,如果您希望将其包括在摘要统计中,则可以调用它们

  2. lambda函数通过调用匿名函数“ lambda x”来工作,然后放置:并列出要执行的操作(即x + 5),然后如果您已经知道什么参数您希望它运行,可以在第二个“ :”之后放入列表。

  3. {0:d}将四舍五入为整数,这对于观察非常有意义。尽管我不知道为什么您不能只说{%.f}。也许是因为前者返回一个显式int,而后者返回一个看起来像int的float。

  4. {:.2f}将返回一个带小数点后两位的浮点数

我不完全了解somestring.format()的作用。我以某种方式将x定义为回归的结果,而x.nobs是变量“观察次数”。与x.rsquared类似。

有人可以为我补充一下公式中发生的事情吗? lambda函数的确切作用是使它能够为每个回归获取数据?

1 个答案:

答案 0 :(得分:1)

让我们对此稍作说明,以使事情变得显而易见:

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_col对象正在接受一些输入,第一个参数是回归对象[reg0,reg1,reg2,reg3]的列表。然后有三个命名参数starsfloat_formatinfo_dict。当我们将回归对象列表作为第一个参数传递时,我相信lambda函数知道将匿名函数应用于每个对象。因此,info_dict所做的就是创建一个包含两个键的字典,NR2映射到字符串。当在lambda函数中引用成员x.nobsx.rsquared时,由于使用它们的上下文,它们将应用于回归对象。

如果您尝试在代码行中使用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)