【问题标题】:dataframe group by month count按月计数的数据框组
【发布时间】:2020-01-25 05:54:45
【问题描述】:

我创建了如下数据框:

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

【问题讨论】:

    标签: python-3.x pandas group-by


    【解决方案1】:

    如果将GrouperGroupBy.sizeDataFrame.resampleResampler.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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 2014-02-14
      • 2021-05-18
      相关资源
      最近更新 更多