2015-02-25 3 views

ответ

2

Убедитесь, что столбец даты является объектом даты и времени и использовать 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 
+1

Кроме того, если ваши даты ваш индекс, вы можете использовать: ФР. set_index ('date'). groupby (lambda x: x.dayofweek, axis = 0) .sum() –