【问题标题】:Can't figure out what a loop with a binning lambda function does无法弄清楚带有分箱 lambda 函数的循环的作用
【发布时间】:2021-10-24 17:42:45
【问题描述】:

这个结构是一个更大的项目的一部分,但我似乎无法弄清楚它的 lambda 部分是如何工作的:

for num in range(1,100):
    dataframe[f'n{num}_bins'] = dataframe[f'n{num}'].apply(
        lambda x: 0 if x < 1
        else 1 if x < 2
        else 2 if x < 3
        else 3 if x < 4
        else 4 if x < 5
        else 5 if x < 6
        else 6

lambda 究竟检查什么?

【问题讨论】:

  • 用于创建行内函数。示例:func = lambda x: print(x)def func(x): print(x) 相同

标签: python pandas loops lambda


【解决方案1】:

对于f'n{num}' 列中的每一行(这是apply 所做的)(以及对于每个这样的列,根据外部循环):

如果该位置的x 值小于:

  • 1 -> 返回0
  • 2 -> 返回1

...

  • 6 -> 返回5
  • 否则(值&gt;=6)->返回6

查看Does Python have a ternary conditional operator?

【讨论】:

    【解决方案2】:

    lambda函数转换成普通函数,你就知道是怎么回事了:

    def func(x):
        if x < 1:
            return 0
        elif x < 2:
            return 1
        elif x < 3:
            return 2
        elif x < 4:
            return 3
        elif x < 5:
            return 4
        elif x < 6:
            return 5
        else:
            return 6
    

    一般情况下,当你有这么多条件时,使用lambda 是非常不符合python 的,也不推荐。

    您对上面的lambda 感到困惑,因为它看起来非常模棱两可且难以阅读。

    【讨论】:

      猜你喜欢
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 2013-10-07
      • 2023-03-25
      相关资源
      最近更新 更多