问题描述
我有以下熊猫DataFrame:
df = pd.DataFrame([[100,100,0],[1.03,1.02,0.97,0.92,1.08,1.03,0.98],[0,0]]).T
df.index = ['2017-12-30','2017-12-30','2017-12-31','2018-01-01','2018-01-02','2018-01-03','2018-01-03']
有输出:
0 1 2
2017-12-30 100.0 1.03 0.0
2017-12-30 100.0 1.02 0.0
2017-12-31 0.0 0.97 0.0
2018-01-01 0.0 1.02 0.0
2018-01-01 0.0 0.92 0.0
2018-01-02 0.0 1.08 0.0
2018-01-02 0.0 1.03 0.0
2018-01-02 0.0 1.02 0.0
2018-01-03 0.0 1.03 0.0
2018-01-03 0.0 0.98 0.0
但是我想将此DataFrame转换为如下所示的DataFrame:
0 1 2
2017-12-30 100.00 1.03 3.0
2017-12-30 100.00 1.02 2.0
2017-12-31 105.00 0.97 -3.15
2018-01-01 101.85 1.02 2.037
2018-01-01 101.85 0.92 -8.15
2018-01-02 95.737 1.08 7.65
2018-01-02 95.737 1.03 2.87
2018-01-02 95.737 1.02 1.91
2018-01-03 108.17 1.03 3.25
2018-01-03 108.17 0.98 -2.16
2018-01-04 109.26 np.nan np.nan
执行的计算如下: 计算最后一列的前两个值。
100 * (1.03-1) = 3
100 * (1.02 -1) = 2
然后第一列中的第三个值将是:
100 + 3 + 2 = 105
计算最后一列的第三行的值。
105 * (0.97-1) = -3.15
然后第一列中的第四和第五个值(与日期相关)将是:
105 -3.15 = 101.85
计算最后一列的第四和第五个值。
101.85 * (1.02-1) = 2.037
101.85 * (0.92-1) = -8.15
这一直持续到所有值都填满为止。
Columns 2
是column 0
的{{1}}倍。 column 1 - 1
来自Columns 0
过去(与时间相关)值summation
的结果。
每天每一行的第0列具有相同的值。这是通过对第2列的过去(在特定日期之前)值进行求和来实现的。
有什么用!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)