You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中使用apply()函数将变量归一化至0-30区间?

如何在变量归一化场景中使用Pandas的apply()函数

核心逻辑

你要实现的是将Portfolio Environmental Score列的数值归一化到0-30区间,对应的公式为:
normalized = 30 * (x - min_value) / (max_value - min_value)
其中min_value是该列的全局最小值,max_value是该列的全局最大值。

apply()的具体用法

在这个场景里,apply()的作用是遍历esg_funds['Portfolio Environmental Score']这个Series的每一个元素,对每个元素执行你定义的计算逻辑:

1. 定义计算逻辑(lambda函数)

lambda函数接收列中的单个元素x,代入归一化公式完成计算:

lambda x: 30*(x - esg_funds['Portfolio Environmental Score'].min())/(esg_funds['Portfolio Environmental Score'].max() - esg_funds['Portfolio Environmental Score'].min())

这里的min()和max()是针对整个Portfolio Environmental Score列计算的,所以在lambda函数中直接调用就能获取全局的最小/最大值。

2. 调用apply()执行归一化

把lambda函数传入apply()方法,它会自动对列内的每个元素应用这个函数,最终返回一个包含归一化结果的新Series:

new_escore = esg_funds['Portfolio Environmental Score'].apply(lambda x: 30*(x-esg_funds['Portfolio Environmental Score'].min())/(esg_funds['Portfolio Environmental Score'].max()-esg_funds['Portfolio Environmental Score'].min()))

优化写法(可选)

为了让代码更简洁,同时减少重复计算的开销,可以提前算出列的最小和最大值:

env_score_col = esg_funds['Portfolio Environmental Score']
min_val = env_score_col.min()
max_val = env_score_col.max()
new_escore = env_score_col.apply(lambda x: 30*(x - min_val)/(max_val - min_val))

内容的提问来源于stack exchange,提问作者user19463887

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:00:47