2017-10-21 25 views
1

我有以下df我如何根据熊猫的任意时间范围进行分组?

A B C   D  E 
8813 0 0 13:40:00 20.0 
11998 0 0 18:00:00 20.0 
12978 0 0 09:30:00 60.0 
17899 0 0 19:00:00 15.0 
19931 0 0 16:00:00 30.0 

我想获得,对于每对(B,C),在两个范围使用小时(d)的平均E:1。10至17:30,和范围2. 17.31至20.30。

喜欢的东西:

A B C  Range Mean 
8813 0 0   1 25.0 (8813+19931)/2 
11998 0 0   2 17.5 (11998+17899)/2 

如何按任意时间组熊猫范围?

+0

让Pandas.datetime对象为终点;比较'D''和enpoints;使用与groupby的比较;骨料? – wwii

回答

1

您可以使用np.where

df['range'] = np.where(df['D'].dt.hour.between(10, 17.30), 1,\ 
np.where(df['D'].dt.hour.between(17.31, 20.30), 2, np.nan)) 

和一系列列然后GROUPBY

df.groupby(['B', 'C','range'])['A', 'E'].mean().reset_index().\ 
.rename(columns = {'A': 'A_mean', 'E': 'E_mean'}) 

    B C range A_mean E_mean 
0 0 0 1.0  14372.0 25.0 
1 0 0 2.0  14948.5 17.5 
相关问题