如何缩放时间序列B以匹配A的累积涨跌幅并保留A原始值
时间序列B的缩放计算方案
- 核心思路:将B的累积百分比变化趋势,线性映射到A的数值区间内,同时可对齐初始值,确保保留A原始值的前提下,B的变化趋势与
df.B.pct_change().fillna(0).cumsum()完全一致,且数值范围与A匹配。
具体步骤及代码实现:
- 计算B的累积百分比变化序列(这是需要保留的核心趋势):
import pandas as pd df = pd.DataFrame({ 'A': [1, 3, 2, 5, 2, 8, 3], 'B': [10, 33, 22, 39, 30, 66, 34], }) # 计算B的累积百分比变化 cum_pct_B = df['B'].pct_change().fillna(0).cumsum()
- 获取A的数值范围,确定缩放目标区间:
A_min = df['A'].min() A_max = df['A'].max()
- 将B的累积百分比变化序列线性缩放到A的数值区间:
# 获取B累积百分比变化的自身范围 cpB_min = cum_pct_B.min() cpB_max = cum_pct_B.max() # 线性缩放公式 B_scaled = A_min + (cum_pct_B - cpB_min) * (A_max - A_min) / (cpB_max - cpB_min)
- 可选:对齐初始值,让缩放后的B与A的起点完全一致:
offset = df['A'].iloc[0] - B_scaled.iloc[0] B_scaled = B_scaled + offset
验证:此时df['A']保留原始数值,B_scaled的走势与B的累积百分比变化完全一致,且数值范围与A高度匹配,满足同维度对比需求。
内容的提问来源于stack exchange,提问作者jamesB
相关产品推荐
相关产品推荐

