pandas 预测到单个列的百分比变化

ezykj2lf  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(81)

我想知道如何在给定的起始量上预测百分比变化。
为了清楚起见,我有一个包含每个日期每日百分比变化的图表。我想将此百分比变化应用于起始值(在本例中为100),以查看其随时间的演变。我已经自定义了每日变化,以简化计算如下:自定义变化= 1 +每日变化/100
金额为100(第一行最后一列是给定的),这是我找不到公式得到的结果列
Expected Result :
我已经尝试了许多方法与Pandas,但它看起来不想执行转移金额列。
我向函数传递一个包含日期和每日变化百分比的Pandas Serie,然后计算每日Var,如下所示:df_col_actif_var['daily_var_custo'] = (1 + df_col_actif_var/100)
最后,我尝试构建包含预期结果的最后一列:df_col_actif_var['std'] = df_col_actif_var['std'].shift(1) * (df_col_actif_var['daily_var_custo'])
但不起作用
请帮帮忙!

wr98u20j

wr98u20j1#

IIUC,您可以用途:

df['Amount'] = (df['Daily Variation']
                    .shift(-1).cumsum()
                    .add(100).shift(1, fill_value=100))
print(df)

# Output
    Date  Daily Variation  Customized Variation  Amount
0  Day 1            -0.75                0.9925  100.00
1  Day 2             1.02                1.1020  101.02
2  Day 3            -0.19                0.9981  100.83
3  Day 4            -0.42                0.9958  100.41
4  Day 5            -0.53                0.9947   99.88

字符串
一步一步:

# shift to remove -0.75
>>> out = df['Daily Variation'].shift(-1)
0    1.02
1   -0.19
2   -0.42
3   -0.53
4     NaN

# compute cumulative sum
>>> out = out.cumsum()
0    1.02
1    0.83
2    0.41
3   -0.12
4     NaN

# add your base value 100
>>> out = out.add(100)
0    101.02
1    100.83
2    100.41
3     99.88
4       NaN

# shift back to align values and fill the first row to your base value
>>> out = out.shift(1, fill_value=100)
0    100.00
1    101.02
2    100.83
3    100.41
4     99.88


另一种方法,但我更喜欢链方法:-)。然而,数学更简单。

df['Amount'] = df.loc[1:, 'Daily Variation']
df.loc[0, 'Amount'] = 100
df['Amount'] = df['Amount'].cumsum()

相关问题