Python 如何按周一、周二对时间序列数据进行分组?熊猫
我有一个时间序列数据框看起来像Python 如何按周一、周二对时间序列数据进行分组?熊猫,python,pandas,Python,Pandas,我有一个时间序列数据框看起来像 value 12-01-2014 1 13-01-2014 2 .... 01-05-2014 5 我想把他们分成几组 1 (Monday, Tuesday, ..., Saturday, Sonday) 2 (Workday, Weekend) 如何在pandas中实现这一点?确保您的dates列是datetime对象,并使用datetime属性: df = pd.DataFrame({'dates':['1/1
value
12-01-2014 1
13-01-2014 2
....
01-05-2014 5
我想把他们分成几组
1 (Monday, Tuesday, ..., Saturday, Sonday)
2 (Workday, Weekend)
如何在pandas中实现这一点?确保您的dates列是datetime对象,并使用datetime属性:
df = pd.DataFrame({'dates':['1/1/15','1/2/15','1/3/15','1/4/15','1/5/15','1/6/15',
'1/7/15','1/8/15','1/9/15','1/10/15','1/11/15','1/12/15'],
'values':[1,2,3,4,5,1,2,3,1,2,3,4]})
df['dates'] = pd.to_datetime(df['dates'])
df['dayofweek'] = df['dates'].apply(lambda x: x.dayofweek)
dates values dayofweek
0 2015-01-01 1 3
1 2015-01-02 2 4
2 2015-01-03 3 5
3 2015-01-04 4 6
4 2015-01-05 5 0
5 2015-01-06 1 1
6 2015-01-07 2 2
7 2015-01-08 3 3
8 2015-01-09 1 4
9 2015-01-10 2 5
10 2015-01-11 3 6
11 2015-01-12 4 0
df.groupby(df['dates'].apply(lambda x: x.dayofweek)).sum()
df.groupby(df['dates'].apply(lambda x: 0 if x.dayofweek in [5,6] else 1)).sum()
输出:
In [1]: df.groupby(df['dates'].apply(lambda x: x.dayofweek)).sum()
Out[1]:
values
dates
0 9
1 1
2 2
3 4
4 3
5 5
6 7
In [2]: df.groupby(df['dates'].apply(lambda x: 0 if x.dayofweek in [5,6] else 1)).sum()
Out[2]:
values
dates
0 12
1 19
此外,如果日期是索引,则可以使用:df.set_index('dates').groupby(lambda x:x.dayofweek,axis=0).sum()