使用 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
一些备注:
- 确保您的 'Index' 列是一个列而不是您的索引。
range(1,...)
确保您的 loop
从 index
1 而不是 0 开始。
- 如果您的
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
一天好时光。 我有一个 table 的数据,你可以通过 link:
下载https://docs.google.com/spreadsheets/d/1EOEuBRYEpDNz5p1m-VD5fkJS7-DmmMlwIgmibrYRWZM/edit?usp=sharing
我应该通过定义初学者值来计算“值”列(在 table 中,初学者值为 1),使用公式:B2 乘以 A3,B3 乘以 A4 ...在“值”列中.
我如何才能在 Pandas 中做到这一点?如果你能帮助我做到这一点,我会很高兴。
我不建议迭代,但每个顺序计算都依赖于先前计算的结果这一事实使向量化变得复杂。
您可以使用 apply
,这在某种程度上会遍历您的行,或者您可以明确地遍历您的行并使用 .loc
.
考虑 DF
:
>>> 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
一些备注:
- 确保您的 'Index' 列是一个列而不是您的索引。
range(1,...)
确保您的loop
从index
1 而不是 0 开始。- 如果您的
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