Python 将熊猫的每日时间序列转换为周行

Python 将熊猫的每日时间序列转换为周行,python,pandas,time-series,Python,Pandas,Time Series,我有一个时间表: days = pd.DatetimeIndex([ '2011-01-01T00:00:00.000000000', '2011-01-02T00:00:00.000000000', '2011-01-03T00:00:00.000000000', '2011-01-04T00:00:00.000000000',

我有一个时间表:

days = pd.DatetimeIndex([
                    '2011-01-01T00:00:00.000000000', 
                    '2011-01-02T00:00:00.000000000',
                    '2011-01-03T00:00:00.000000000', 
                    '2011-01-04T00:00:00.000000000',
                    '2011-01-05T00:00:00.000000000', 
                    '2011-01-06T00:00:00.000000000',
                    '2011-01-07T00:00:00.000000000', 
                    '2011-01-08T00:00:00.000000000',
                    '2011-01-09T00:00:00.000000000', 
                    '2011-01-11T00:00:00.000000000', 
                    '2011-01-12T00:00:00.000000000',
                    '2011-01-13T00:00:00.000000000', 
                    '2011-01-14T00:00:00.000000000',
                    '2011-01-16T00:00:00.000000000',
                    '2011-01-18T00:00:00.000000000',
                    '2011-01-19T00:00:00.000000000',
                    '2011-01-21T00:00:00.000000000',
                   ])
counts = [85, 97, 24, 64, 3, 37, 73, 86, 87, 82, 75, 84, 43, 51, 42, 3, 70]
df = pd.DataFrame(counts,
                  index=days,
                  columns=['count'],
                 )
df['day of the week'] = df.index.dayofweek
看起来是这样的:

            count   day of the week
2011-01-01  85      5
2011-01-02  97      6
2011-01-03  24      0
2011-01-04  64      1
2011-01-05  3       2
2011-01-06  37      3
2011-01-07  73      4
2011-01-08  86      5
2011-01-09  87      6
2011-01-11  82      1
2011-01-12  75      2
2011-01-13  84      3
2011-01-14  43      4
2011-01-16  51      6
2011-01-18  42      1
2011-01-19  3       2
2011-01-21  70      4
请注意,有一些天数缺失,应该用零填充。我想将其转换为日历,这样行数按周递增,列数为一周中的天数,值为该特定日期的计数。因此,最终结果应该如下所示:

    0   1   2   3   4   5   6
0   0   0   0   0   0   85  97
1   24  64  3   37  73  86  87
2   0   82  75  84  0   0   51
3   0   42  3   0   70  0   0 
#根据星期几创建周数
df['weeks']=(df['day of the weeks'].diff()<0.cumsum()
#旋转桌子
df.pivot('weeks','day of the week','count')。fillna(0)

在第0周,前五天(0-4天)的计数为零。有没有办法改变一切,让第六天是第一天?如果我将这个DF转换成一个numpy数组,然后将其展平,那么它的开头和结尾将填充零,但我希望它的长度与原始DF中的行数相同。我计划对此数据透视表应用一些转换。您可以通过传递列名对列重新排序<代码>新的_df[[6,0,1,2,3,4,5]]将把第七列作为第一列。这就是你的意思吗?
# create weeks number based on day of the week  
df['weeks'] = (df['day of the week'].diff() < 0).cumsum()  

# pivot the table
df.pivot('weeks', 'day of the week', 'count').fillna(0)