2017-10-21 1 views
1

I는 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 

I 얻을하고자, 각 쌍 (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이 엔드 포인트에 대한 개체를 확인 GROUPBY; ''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)) 

그리고를 사용하여 범위 열을 만들 수 있습니다 다음

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 
관련 문제