python - python中的命名lambda函数用于pandas的agg函数
问题描述
下面的代码
df = pd.DataFrame({
'A': ['a', 'b', 'a', 'b', 'b'],
'B': [1, 2, 3, 4, 8],
'C': [10, 20, 30, 40, 80]})
df[['B', 'C']].agg([min, lambda x: x.quantile(0.3), max])
返回:
| | B C |
| -------- | -------------- |
| min | 1.0 10.0 |
| <lambda> | 2.2 22.0 |
| max | 8.0 80.0 |
问题: *
有什么方法可以命名 lambda 函数,以便将名称<lambda>
替换为有意义的东西?
类似于下面编写的代码(这是伪代码,不起作用):
df[['B', 'C']].agg([min, def pct30(x): return x.quantile(0.3), max])
代替:
def pct30(x):
return x.quantile(0.3)
df[['B', 'C']].agg([min, pct30, max])
返回:
| | B C |
| -------- | -------------- |
| min | 1.0 10.0 |
| pct30 | 2.2 22.0 |
| max | 8.0 80.0 |
解决方案
“命名” lambda 函数的唯一另一种方法如下:
它有点类似于第二个选项,但更简洁。
pct30 = lambda x: x.quantile(0.3)
df[['B', 'C']].agg([min, pct30, max])
给出相同的输出
B C
min 1.0 10.0
<lambda> 2.2 22.0
max 8.0 80.0
推荐阅读
- ruby-on-rails - Ruby on Rails - 如何列出数据库中的项目
- javascript - 我需要输入元素内的小闪烁光标从右侧而不是从左侧开始
- java - 在 PROD 和 TEST 中的数据库的 JNDI 名称之间切换
- xpath - 获取带有文本的元素并且其父元素没有文本
- go - 有没有办法一次构建多个基于 Go 模块的项目?
- sql - 在使用不同的 JOIN 语句时,是否有使用 UNION / UNION ALL 的替代方法?
- arrays - 数组元素发生了什么?
- java - Dropbox API 不更新访问级别
- matlab - MATLAB:调用内置的问题('addlistener',...)
- python - 如何修复“NameError:未定义名称‘默认’”?