группа данных по месяцам - PullRequest
       13

группа данных по месяцам

1 голос
/ 25 сентября 2019

Я создал фрейм данных, как показано ниже:

paystart = datetime.date(2017, 10, 26)
paydate = pd.DataFrame()
paydate['PayDate'] = pd.date_range(paystart, end, freq='14D')
print(paydate.Grouper(freq='M'))

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

 2017-10   1
 2017-11   2
 2017-12   2

1 Ответ

1 голос
/ 25 сентября 2019

При использовании Grouper с GroupBy.size или DataFrame.resample с Resampler.size выходной сигнал равен DatetimeIndex:

paydate = pd.DataFrame()
paydate['PayDate'] = pd.date_range('2017-10-26', '2017-12-26', freq='14D')
print (paydate)
     PayDate
0 2017-10-26
1 2017-11-09
2 2017-11-23
3 2017-12-07
4 2017-12-21

print(paydate.groupby(pd.Grouper(freq='M', key='PayDate')).size())
PayDate
2017-10-31    1
2017-11-30    2
2017-12-31    2
Freq: M, dtype: int64

print(paydate.resample('M', on='PayDate').size())
PayDate
2017-10-31    1
2017-11-30    2
2017-12-31    2
Freq: M, dtype: int64

Или возможно создать месячные периоды с помощью Series.dt.to_period - вывод PeriodIndex:

print(paydate.groupby(paydate['PayDate'].dt.to_period('m')).size())
PayDate
2017-10    1
2017-11    2
2017-12    2
Freq: M, dtype: int64
...