使用 Pandas 列中的起始值计算值 (python)

Calculating values using begining value in column Pandas (python)

一天好时光。 我有一个 table 的数据,你可以通过 link:

下载

https://docs.google.com/spreadsheets/d/1EOEuBRYEpDNz5p1m-VD5fkJS7-DmmMlwIgmibrYRWZM/edit?usp=sharing

我应该通过定义初学者值来计算“值”列(在 table 中,初学者值为 1),使用公式:B2 乘以 A3,B3 乘以 A4 ...在“值”列中.

我如何才能在 Pandas 中做到这一点?如果你能帮助我做到这一点,我会很高兴。

我不建议迭代,但每个顺序计算都依赖于先前计算的结果这一事实使向量化变得复杂。

您可以使用 apply,这在某种程度上会遍历您的行,或者您可以明确地遍历您的行并使用 .loc.

执行计算

考虑 DF:

的前 4 行
>>> df
      Index  Values
0  1.066373     1.0
1  1.126100     NaN
2  1.081077     NaN
3  1.048902     NaN
4  1.068631     NaN

for i in range(1, len(df)):
    df.loc[i, 'Values'] = df.loc[i-1, 'Values'] * df.loc[i, 'Index']

DF 中的值列更新为:

      Index    Values
0  1.066373  1.000000
1  1.126100  1.126100
2  1.081077  1.217401
3  1.048902  1.276934
4  1.068631  1.364571

一些备注:

  1. 确保您的 'Index' 列是一个列而不是您的索引。
  2. range(1,...) 确保您的 loopindex 1 而不是 0 开始。
  3. 如果您的 DF 很大,我认为这会很慢

您可以在 Index 值上使用 cumprod(累积乘积)方法,在将第一个值替换为 1 后:

import pandas as pd

df = pd.DataFrame({'Index': [1.066373, 1.126100, 1.081077, 1.048902, 1.068631]})
df['Values'] = df.Index
df.Values[0] = 1
df.Values = df.Values.cumprod()
df
    Index       Values
0   1.066373    1.000000
1   1.126100    1.126100
2   1.081077    1.217401
3   1.048902    1.276934
4   1.068631    1.364571