命名一个lambda函数导致python中的错误

时间:2018-02-03 20:06:34

标签: python lambda

在groupby中,我正在使用lambda,并将其命名为以后将很容易阅读。但对于一些我不知道这行代码正在工作的方法

  'tradePrice': ['first', np.max, np.min, 'last', lambda x: max(x) - min(x)],

但是在为lambda函数添加名称时,如下所示:

'tradePrice':['first',np.max, np.min, 'last',('priceRange',lambda x: max(x) - min(x))],

我收到错误:

  

Traceback(最近一次调用最后一次):文件   “C:\ Users \ gilad \ venv \ lib \ site-packages \ pandas \ core \ sorting.py”,line   446,在safe_sort中       sorter = values.argsort()TypeError:'<' 'function'和'str'

的实例之间不支持

最有趣的是,在接下来的几行中,我确实在这里成功使用了相同的语法:

  'trade': [('sum', np.sum),('number+trade', lambda x: (x > 0).sum())],

如果有人知道为什么lambda的“标签”不能在这个特定的行中工作,我会很感激分享任何想法。 谢谢!

1 个答案:

答案 0 :(得分:0)

替换工作代码中的lambda

'tradePrice': ['first', np.max, np.min, 'last', lambda x: max(x) - min(x)],

名为 lambda将包含:

priceRange = lambda x: max(x) - min(x)

# ...

'tradePrice': ['first', np.max, np.min, 'last', priceRange],

优点是可读性和在其他地方重用lambda函数的能力。