как эффективно реализовать эту разностную операцию? - PullRequest
0 голосов
/ 05 июля 2018

Я хотел бы построить фрейм данных из существующего, где каждое значение в строке зависит от предыдущего. У меня есть начальное значение v0 в качестве отправной точки. Позвольте мне привести пример

In [126]:import pandas as pd

In [127]: df = pd.DataFrame([1.0, 1.1, 1.2, 1.3])

In [128]: df_result = df.copy()

In [129]: v0 = 10

In [130]: for i in range(1, len(df.index)):
     ...:     df_result.iloc[i, 0] = df.iloc[i, 0]*df_result.iloc[i-1, 0]
     ...: 

In [131]: df_result
Out[131]: 
       0
0  1.000
1  1.100
2  1.320
3  1.716

В [132]:

Мой вопрос о цикле for. Как я могу более эффективно написать это?

1 Ответ

0 голосов
/ 05 июля 2018

Я считаю, что сначала нужно numpy.insert значение v0 до первой позиции, а затем позвонить numpy.cumprod:

df = pd.DataFrame([1.0, 1.1, 1.2, 1.3], columns=['r'])
v0 = 10

df['n'] = np.cumprod(np.insert(df['r'].values[1:], 0, v0))
print (df)
     r      n
0  1.0  10.00
1  1.1  11.00
2  1.2  13.20
3  1.3  17.16
...