Python: создание структуры данных с задержкой (t-1) из нескольких элементов - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблемы с созданием столбца временной задержки для моих данных.Он отлично работает, когда я делаю это для фрейма данных с просто видом элементов, но не работает, когда у меня разные элементы.Например, мой набор данных выглядит примерно так:

enter image description here

при использовании предложенной команды:

data1['lag_t'] = data1['total_tax'].shift(1)

Я получаю результаткак это:

enter image description here

Как видите, он просто смещает все значения total_tax на одну строку.Однако мне нужно сделать это отставание для КАЖДОГО ОДНОГО из id_inf (как отдельные элементы).

Мой набор данных действительно огромен, поэтому мне нужно найти способ решить эту проблему.В результате я могу получить такую ​​таблицу:

enter image description here

1 Ответ

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

Вы можете groupby по индексу и shift

# an example with random data.
data1 = pd.DataFrame({'id': [9,9,9,54,54,54],'total_tax':[5,6,7,1,2,3]}).set_index('id')

data1['lag_t'] = data1.groupby(level=0)['total_tax'].apply(lambda x: x.shift())

print (data1)

    tax  lag_t
id            
9     5    NaN
9     6    5.0
9     7    6.0
54    1    NaN
54    2    1.0
54    3    2.0
...