Роллинг вычитание в пандах - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь сделать что-то подобное.

ff = pd.DataFrame({'uid':[1,1,1,20,20,20,4,4,4],
                   'date':['09/06','10/06','11/06',
                           '09/06','10/06','11/06',
                           '09/06','10/06','11/06'],
                   'balance':[150,200,230,12,15,15,700,1000,1500],
                  'difference':[np.NaN,50,30,np.NaN,3,0,np.NaN,300,500]})

Я пробовал с прокруткой, но я не могу найти функцию или подкласс прокрутки, который вычитает, только sum и var и другие характеристики.Есть ли способ?Я думал, что смогу создать два df s: один - с первым номером каждого убранного идентификатора, второй - с последним рядом каждого убранного идентификатора.Но, честно говоря, я понятия не имею, как сделать это динамически, для каждого идентификатора пользователя.

1 Ответ

0 голосов
/ 11 июня 2018

Использование groupby с diff:

df = pd.DataFrame({'uid':[1,1,1,20,20,20,4,4,4],
                   'date':['09/06','10/06','11/06',
                           '09/06','10/06','11/06',
                           '09/06','10/06','11/06'],
                   'balance':[150,200,230,12,15,15,700,1000,1500]})

df['difference'] = df.groupby('uid')['balance'].diff()

Вывод:

   uid   date  balance  difference
0    1  09/06      150         NaN
1    1  10/06      200        50.0
2    1  11/06      230        30.0
3   20  09/06       12         NaN
4   20  10/06       15         3.0
5   20  11/06       15         0.0
6    4  09/06      700         NaN
7    4  10/06     1000       300.0
8    4  11/06     1500       500.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...