Как заполнить ячейку (i, j) ячейкой (i-1, j-1) в DataFram в Python - PullRequest
0 голосов
/ 22 декабря 2018

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

'T' 'Y' 'item' 'item_p'

A |2001 |2 |Нан

А |2002 |3 |Нан

А |2003 |5 |Нан

А |2004 |6 |Нан

А |2005 |7 |Nan

B |2001 |9 |Нан

Б |2002 |3 |Nan

B |2003 |5 |Nan

B |2004 |6 |Нан

Б |2005 |7 |Nan

Я хочу, чтобы каждая ячейка в столбце 'item_p' была заполнена значением предыдущего значения столбца 'item'

Поэтому результат должен быть следующим:

'T' 'Y' 'item' 'item_p'

A |2001 |2 |Нан

А |2002 |3 |2

A |2003 |5 |3

A |2004 |6 |5

A |2005 |7 |6

B |2001 |9 |7

B |2002 |3 |9

B |2003 |5 |3

B |2004 |6 |5

B |2005 |7 |6

Я выполнил задачу с помощью вложенных циклов for, но я думаю, что есть лучший способ сделать это.Есть ли команда для выполнения такой задачи

1 Ответ

0 голосов
/ 22 декабря 2018

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

В вашем примере:

df['item_p'] = df['item'].shift(1)

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.shift.html

...