Pandas Multindex: итерация строк и добавление определенных значений для создания новой переменной - PullRequest
1 голос
/ 10 июля 2019

У меня есть фрейм данных pandas с Multindex ( id и datetime ) и одним столбцом с именем X1.

                                X1
id          datetime          
a1ssjdldf   2019 Jul 10          2  
            2019 Jul 11         22  
            2019 Jul 12         21
r2dffs      2019 Jul 10         14  
            2019 Jul 11         13  
            2019 Jul 12         11

Я хочу создать новую переменную X2, где соответствующее значение представляет собой разницу между значением X1 той же строки и значением X1 предыдущей строки.Но каждый раз, когда он видит новый идентификатор, соответствующее значение должно быть перезапущено с нуля.

Например:

                                X1          X2
id          datetime          
a1ssjdldf   2019 Jul 10          2           0
            2019 Jul 11         22          20  
            2019 Jul 12         21          -1
r2dffs      2019 Jul 10         14           0
            2019 Jul 11         13          -1
            2019 Jul 12         11          -2

1 Ответ

2 голосов
/ 10 июля 2019

Используйте DataFrameGroupBy.diff по первому уровню и замените пропущенные значения на Series.fillna:

df['X2'] = df.groupby(level=0)['X1'].diff().fillna(0, downcast='int')
print (df)
                       X1  X2
id        datetime           
a1ssjdldf 2019 Jul 10   2   0
          2019 Jul 11  22  20
          2019 Jul 12  21  -1
r2dffs    2019 Jul 10  14   0
          2019 Jul 11  13  -1
          2019 Jul 12  11  -2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...