如何对DataFrame的Weight列做归一化,使该列所有数值总和为1
实现Weight列总和为1的归一化方法
你要的是总和归一化(也叫比例缩放),核心逻辑是将列内每个元素除以该列的总和即可,以下是Python pandas生态下的常用实现:
- 首先构造你的示例DataFrame:
import pandas as pd df = pd.DataFrame({ "Time": [1,2,3,4], "Weight": [4,2,1,7] })
- 归一化操作(可以存为新列或者覆盖原列):
# 计算Weight列总和 total = df["Weight"].sum() # 生成归一化后的新列 df["normalized_Weight"] = df["Weight"] / total # 如果要覆盖原Weight列,改为 df["Weight"] = df["Weight"] / total 即可
- 结果验证:你的示例数据Weight列总和为14,归一化后四个值分别为
4/14≈0.2857、2/14≈0.1429、1/14≈0.0714、7/14=0.5,求和后恰好为1。 - 注意事项:
- 若Weight列存在负数,归一化后总和仍为1但会出现负值,用于概率场景前请先做非负处理
- 若Weight列总和为0会触发除以0报错,处理前可增加总和判断逻辑,按业务需求做异常处理就行
内容的提问来源于stack exchange,提问作者tj judge
相关产品推荐
相关产品推荐

