如何在Pandas DataFrame中扩大数值间的间距?
如何在Pandas DataFrame中扩大数值间的间距?
输入示例
先构造目标DataFrame:
import pandas as pd df = pd.DataFrame({'A': [3,5,6,5,9]}, index=[1,2,3,5,6])
输入结构如下:
A 1 3 2 5 3 6 5 5 6 9
需求说明
生成新列B,规则为:
B的第一个元素与A的第一个元素相同- 后续每个
B元素 = 前一个B元素 + (当前A元素 - 前一个A元素) × 放大倍数x(示例中x=2)
实现代码
x = 2 # 设定放大倍数 # 计算A列相邻元素的差值 diff_A = df['A'].diff() # 计算B列的增量:差值乘以放大倍数 diff_B = diff_A * x # 累加增量并加上初始值,得到B列 df['B'] = df['A'].iloc[0] + diff_B.cumsum().fillna(0)
输出结果
运行后得到的DataFrame:
A B 1 3 3 2 5 7 # 3 + (5-3)*2 = 7 3 6 9 # 7 + (6-5)*2 = 9 5 5 7 # 9 + (5-6)*2 = 7 6 9 15 # 7 + (9-5)*2 = 15
逻辑解释
diff()方法计算A列相邻元素的差值,第一个元素因无前置值,结果为NaN- 将差值乘以放大倍数x,得到
B列每个位置相对于前一个位置的增量 cumsum()对增量进行累加,fillna(0)处理第一个元素的NaN,保证初始累加值为0- 最后加上
A列的第一个元素,得到最终的B列
内容的提问来源于stack exchange,提问作者Igor K.
相关产品推荐
相关产品推荐

