Используйте pandas.shift () внутри группы - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть фрейм данных с данными панели, скажем, это временной ряд для 100 различных объектов:

object  period  value 
1       1       24
1       2       67
...
1       1000    56
2       1       59
2       2       46
...
2       1000    64
3       1       54
...
100     1       451
100     2       153
...
100     1000    21

Я хочу добавить новый столбец prev_value, в котором будут храниться предыдущие value для каждого объекта:

object  period  value  prev_value
1       1       24     nan
1       2       67     24
...
1       99      445    1243
1       1000    56     445
2       1       59     nan
2       2       46     59
...
2       1000    64     784
3       1       54     nan
...
100     1       451    nan
100     2       153    451
...
100     1000    21     1121

Могу ли я как-то использовать .shift () и .groupby () для этого?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Да, просто выполните:

df['prev_value'] = df.groupby('object')['value'].shift()

Для этого примера dataframe:

print(df)

     object  period  value
0       1       1     24
1       1       2     67
2       1       4     89
3       2       4      5
4       2      23     23

Результат будет:

     object  period  value  prev_value
0       1       1     24         NaN
1       1       2     67        24.0
2       1       4     89        67.0
3       2       4      5         NaN
4       2      23     23         5.0
0 голосов
/ 16 ноября 2018

Просто создайте новый столбец из существующего.

data["prev_value"] = data["value"] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...