Подтвердить что ты не робот

Добавление столбца, являющегося результатом разницы в последовательных строках в pandas

Давайте скажем, что у меня есть такой кадр данных

    A   B
0   a   b
1   c   d
2   e   f 
3   g   h

0,1,2,3 - времена, a, c, e, g - один временной ряд, а b, d, f, h - другой временной ряд. Мне нужно иметь возможность добавлять два столбца в фреймворк orignal, который получается путем вычисления разностей последовательных строк для определенных столбцов.

Мне нужно что-то вроде этого

    A   B   dA
0   a   b  (a-c)
1   c   d  (c-e)
2   e   f  (e-g)
3   g   h   Nan

Я видел что-то, называемое diff, в dataframe/series, но это немного отличается, поскольку в первом элементе будет Nan.

4b9b3361

Ответ 1

Используйте shift.

df['dA'] = df['A'] - df['A'].shift(-1)

Ответ 2

Вы можете использовать diff и передать -1 в качестве аргумента periods:

>>> df = pd.DataFrame({"A": [9, 4, 2, 1], "B": [12, 7, 5, 4]})
>>> df["dA"] = df["A"].diff(-1)
>>> df
   A   B  dA
0  9  12   5
1  4   7   2
2  2   5   1
3  1   4 NaN

[4 rows x 3 columns]