рассчитать все расходы за последние 3 дня в месячном периоде в python - PullRequest
0 голосов
/ 17 марта 2020

python новичков здесь. Я пытаюсь подсчитать все расходы за последние 3 дня за месяц. ввод будет:

date   name   amount
mar.5  mary    1
mar.6  mary    2
mar.6  mary    3
mar.7  tom     4
mar.8  mary    5
mar.8  tom     6

и идеальный результат будет

date   name   amount
mar.5  mary    1
mar.5  tom     0    
mar.6  mary    6
mar.6  tom     0
mar.7  mary    6
mar.7  tom     4
mar.8  mary    10(2+3+5)
mar.8  tom     10(4+6)

et c.

Я пытаюсь использовать python для создания * oop, чтобы обвести в кружок "последние 3 дня", но при затруднении определить способ сделать это, любой вклад будет принят. Надеюсь, что все в безопасности от этого вируса.

1 Ответ

1 голос
/ 17 марта 2020

Используйте DataFrame.pivot_table с DataFrame.rolling и sum, затем измените форму на DataFrame.unstack, измените уровни на DataFrame.swaplevel и даты последней сортировки:

df = (df.pivot_table(index='date',columns='name', values='amount', aggfunc='sum')
       .rolling(3, min_periods=1)
       .sum()
       .fillna(0)
       .unstack()
       .swaplevel(0,1)
       .sort_index(level=0)
       .reset_index(name='amount')
       )
print (df)
    date  name  amount
0  mar.5  mary     1.0
1  mar.5   tom     0.0
2  mar.6  mary     6.0
3  mar.6   tom     0.0
4  mar.7  mary     6.0
5  mar.7   tom     4.0
6  mar.8  mary    10.0
7  mar.8   tom    10.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...