在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的“标签”不能在这个特定的行中工作,我会很感激分享任何想法。 谢谢!
答案 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
函数的能力。