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

如何将Pandas DataFrame中的风电功率数据归一化至0.6-8.4的指定区间?

解决方案:将0-1归一化结果映射到指定区间

你已经搞定了核心的0-1归一化步骤,接下来只需要通过线性映射就能把结果转换到0.6到8.4的目标区间。这个逻辑很简单:先把0-1区间的归一化值放大到目标区间的长度,再平移到目标区间的起始点。

具体公式

假设:

  • normalized_01:你已经得到的0-1范围归一化值
  • min_target:目标区间最小值(这里是0.6)
  • max_target:目标区间最大值(这里是8.4)

转换公式为:

normalized_target = normalized_01 * (max_target - min_target) + min_target

完整代码实现

结合你的现有代码,完整的实现如下:

import pandas as pd
from pandas import Timestamp

# 初始化你的原始DataFrame
df = pd.DataFrame(
    {
        'DateTime': {
            0: Timestamp('2022-02-08 00:00:00'),
            1: Timestamp('2022-02-08 00:10:00'),
            2: Timestamp('2022-02-08 00:20:00'),
            3: Timestamp('2022-02-08 00:30:00'),
            4: Timestamp('2022-02-08 00:40:00')
        },
        'wind power [W]': {0: 83.9, 1: 57.2, 2: 58.2, 3: 48.0, 4: 69.5}
    }
)

# 第一步:0-1归一化(你的原有代码)
df['normalized_01'] = (df['wind power [W]'] - df['wind power [W]'].min()) / (df['wind power [W]'].max() - df['wind power [W]'].min())

# 第二步:映射到0.6-8.4区间
min_target = 0.6
max_target = 8.4
df['normalized_target'] = df['normalized_01'] * (max_target - min_target) + min_target

# 查看结果
print(df[['DateTime', 'wind power [W]', 'normalized_target']])

结果验证

运行代码后,你可以看到:

  • 原最小值48.0对应的normalized_target是0.6,完全符合要求
  • 原最大值83.9对应的normalized_target是8.4,正确映射
  • 中间值会按比例分布在0.6到8.4之间,比如57.2会被映射到约2.6,符合线性比例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:47:50