Как агрегировать значения выплат по месяцам из кадра данных pandas? - PullRequest
0 голосов
/ 30 мая 2018

Как агрегировать значения по месяцам и по дате из этого фрейма данных:

payout_date payout_value
2017-01-14  1
2017-01-14  30
2017-01-16  216
2017-02-17  23
2017-02-17  2
2017-03-19  745
2017-03-19  32
2017-03-20  11
2017-03-20  222
2017-03-21  4

Для ежедневных агрегированных значений я использовал

df.groupby('date').agg(['sum'])

payout_value
sum
date    
2017-01-14  31
2017-01-16  216
2017-02-17  25
2017-03-19  777
2017-03-20  233
2017-03-21  4

Как получить агрегированные по месяцам payout value?

payout_date payout_value
2017-01-14  247
2017-02-17  25
2017-03-19  1014

1 Ответ

0 голосов
/ 30 мая 2018

Это одно решение.Пара замечаний:

  • Когда вы используете pd.Grouper с freq='M', индекс groupby становится последним днем ​​каждого месяца.
  • Для группировки по дням:преобразование в pd.Grouper объект не требуется, хотя вы можете использовать pd.Grouper с freq='D', если хотите, и отфильтровывать NaN значения.

Группировать по месяцам

df['payout_date'] = pd.to_datetime(df['payout_date'])

grouper = pd.Grouper(key='payout_date', freq='M')
res1 = df.groupby(grouper)['payout_value'].sum().reset_index()

print(res1)

   month  payout_value
0      1           247
1      2            25
2      3          1014

Группировка по дням

res2 = df.groupby('payout_date', as_index=False)['payout_value'].sum()

print(res2)

  payout_date  payout_value
0  2017-01-14            31
1  2017-01-16           216
2  2017-02-17            25
3  2017-03-19           777
4  2017-03-20           233
5  2017-03-21             4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...