Python Pandas: Как векторизовать операцию, которая использует предыдущие значения? - PullRequest
0 голосов
/ 31 января 2019

Я хочу сделать что-то вроде этого:

df['indicator'] = df.at[x-1] + df.at[x-2]

или

df['indicator'] = df.at[x-1] > df.at[x-2]

Я предполагаю, что крайние случаи будут приняты мерыиз автоматически, например, пропустить первые несколько строк.

1 Ответ

0 голосов
/ 31 января 2019

Эта строка должна дать вам то, что вам нужно.Первые две строки для вашего столбца indicator будут автоматически заполнены 'NaN'.

df['indicator'] = df.at.shift(1) + df.at.shift(2)

Например, если у нас был следующий кадр данных:

a = pd.DataFrame({'date':['2017-06-01','2017-06-02','2017-06-03',
                         '2017-06-04','2017-06-05','2017-06-06'],
                 'count'    :[10,15,17,5,3,7]})


          date     at
0   2017-06-01     10
1   2017-06-02     15
2   2017-06-03     17
3   2017-06-04      5
4   2017-06-05      3
5   2017-06-06      7

Тогда выполнение этой строки даст следующий результат:

df['indicator'] = df.at.shift(1) + df.at.shift(2)

          date  at   indicator
0   2017-06-01  10         NaN
1   2017-06-02  15         NaN
2   2017-06-03  17        25.0
3   2017-06-04   5        32.0
4   2017-06-05   3        22.0
5   2017-06-06   7         8.0
...