使用pandas groupby计算周数

我有以下示例数据框:


Date                count_row   Work_Type

2018-07-31 00:00:00 1           logpage

2018-08-01 00:00:00 1           logpage

2018-08-01 00:00:00 1           logpage

2018-08-01 00:00:00 1           logpage

2018-08-01 00:00:00 1           logpage

2018-09-02 00:00:00 1           logpage

2018-09-02 00:00:00 1           logpage

2018-09-03 00:00:00 1           logpage

2018-09-04 00:00:00 1           logpage

2018-09-04 00:00:00 1           logpage

2018-09-06 00:00:00 1           logpage

2018-09-07 00:00:00 1           logpage

2018-09-08 00:00:00 1           logpage

我想将其分解为几周,并计算该周的出现次数。具体来说,我认为一周的开始是星期一,一周的结束是星期日。


例如,9/3/2018是星期一(或我认为是一周的开始)。所以从那个星期一到下一个星期日,我算的是9/3/2018。


以下是我正在寻找的数据框结果:


Beginning of Week Date (Mon)    count

7/30/2018                       5

8/27/2018                       2

9/3/2018                        6

我尝试了以下代码:


df.set_index('Date', inplace=True)

df.sort_index(inplace=True)


def take_first(array_like):

    return array_like[0]


output = df.resample('W',                  

                    how={'Date': take_first, 

                         'count_row': 'sum'}, 

                    loffset=pd.offsets.timedelta(days=-6))

这是我得到的错误:


IndexError: index out of bounds


白衣非少年
浏览 225回答 2
2回答

慕婉清6462132

您可以使用resample:df.resample('W-Mon', on='Date', label='left', closed='left').sum().query('count_row > 0') 输出:            count_rowDate                 2018-07-30          52018-08-27          22018-09-03          6
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python