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)