Pandas 在这段代码中,lambda函数在summary col的info_dict参数中做什么?

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'

我正在对一组标准的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函数。我对它们的工作原理有相当好的了解。我确实理解的代码的各个方面:

  • info\u dict
    是一个值字典,如果您希望将它们包含在摘要统计数据中,可以调用它

  • lambda函数通过调用匿名函数“lambda x”来工作,然后放置
    ,并列出要执行的操作(即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
    对象。