Можем ли мы использовать фрейм данных Pandas для вычисления следующего значения, используя предыдущее значение? Хорошим примером будут числа Фибоначчи - PullRequest
3 голосов
/ 23 октября 2019

Итак, я понимаю, что мы можем использовать фрейм данных pandas для выполнения векторных операций над ячейками, например,

df = pd.Dataframe([a, b, c])
df*3

будет выглядеть примерно так:

0 a*3
1 b*3
2 c*3

, но мы можем использовать фрейм данных pandas дляскажем рассчитать последовательность Фибоначчи? Я спрашиваю об этом, потому что для последовательности Фибоначчи следующее число зависит от двух предыдущих чисел (F_n = F_ (n-1) + F_ (n-2)). Меня не совсем интересует последовательность Фибоначчи, и меня больше интересует, можем ли мы сделать что-то вроде:

df = pd.DataFrame([a,b,c])
df.apply( some_func )

0 x1 a
1 x2 b
2 x3 c

, где x1 будет вычислено из a, b, c (я знаю, что это возможно), x2будет вычислено из x1, а x3 будет вычислено из x2

пример Фибоначчи будет выглядеть примерно так:

df = pd.DataFrame()
df.apply(fib(n, df))

0 0
1 1
2 1
3 2
4 2
5 5 
.
.
.
n-1 F(n-1) + F(n-2) 

1 Ответ

1 голос
/ 23 октября 2019

Вам нужно перебрать строки и получить доступ к данным предыдущих строк по DataFrame.loc. Например, n = 6

df = pd.DataFrame()

for i in range(0, 6):
    df.loc[i, 'f'] = i if i in [0, 1] else df.loc[i - 1, 'f'] + df.loc[i - 2, 'f']

df
     f
0  0.0
1  1.0
2  1.0
3  2.0
4  3.0
5  5.0
...