2017-10-06 1 views
0

나는 잠시 Pandas를 사용 해왔다. 나는 그것이 바보 같은 질문이라고 확신한다.비교 및 ​​열 생성을 위해 datetime.time 사용

datetime.time을 조건으로하는 데이터 프레임에 열을 만들어야합니다. datetime.time < 12 인 경우 열을 'morning'으로 채우고 동일한 프로세스를 '오후'및 '밤'으로 채 웁니다.

import datetime 

b['time'] = ['01-01-2000 10:00:00', '01-01-2000 15:00:00', '01-01-2000 21:00:00'] 

b['time'].dt.time 

(output) 
1 10:00:00 
2 15:00:00 
3 21:00:00 

b['time'].dt.time < 12 #example 

TypeError: can't compare datetime.time to int 

질문 : 저는 datetime.time을 int로 비교할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?

매우 감사드립니다.

+0

이 시간을 비교할 수 없습니다? 데이터 샘플과 원하는 출력을 추가 할 수 있습니까? – jezrael

+0

견본이 추가되었습니다. 원하는 출력은 True/False 시리즈와 같은 것입니다. – Vini

+0

그런 다음'b [ 'time']을 사용하십시오 .dt.hour <12' – jezrael

답변

0

난 당신이 쓰레기통에 의해 라벨 cut 또는 numpy.searchsorted를 사용할 수 있다고 생각 :

rng = pd.date_range('2017-04-03', periods=24, freq='H') 
df = pd.DataFrame({'Date': rng}) 

bins = [0, 5, 13, 17, 25] 
labels = ['Morning','Afternoon','Evening','Night'] 
hours = df['Date'].dt.hour 
df['bin'] = pd.cut(hours-5+24 *(hours<5),bins=bins,labels=labels,right=False) 

bins = [-1,4,9,17,21] 
labels = ['Night', 'Morning','Afternoon','Evening','Night'] 
df['bin1'] = np.array(labels)[np.array(bins).searchsorted(hours)-1]      
print (df) 
        Date  bin  bin1 
0 2017-04-03 00:00:00  Night  Night 
1 2017-04-03 01:00:00  Night  Night 
2 2017-04-03 02:00:00  Night  Night 
3 2017-04-03 03:00:00  Night  Night 
4 2017-04-03 04:00:00  Night  Night 
5 2017-04-03 05:00:00 Morning Morning 
6 2017-04-03 06:00:00 Morning Morning 
7 2017-04-03 07:00:00 Morning Morning 
8 2017-04-03 08:00:00 Morning Morning 
9 2017-04-03 09:00:00 Morning Morning 
10 2017-04-03 10:00:00 Afternoon Afternoon 
11 2017-04-03 11:00:00 Afternoon Afternoon 
12 2017-04-03 12:00:00 Afternoon Afternoon 
13 2017-04-03 13:00:00 Afternoon Afternoon 
14 2017-04-03 14:00:00 Afternoon Afternoon 
15 2017-04-03 15:00:00 Afternoon Afternoon 
16 2017-04-03 16:00:00 Afternoon Afternoon 
17 2017-04-03 17:00:00 Afternoon Afternoon 
18 2017-04-03 18:00:00 Evening Evening 
19 2017-04-03 19:00:00 Evening Evening 
20 2017-04-03 20:00:00 Evening Evening 
21 2017-04-03 21:00:00 Evening Evening 
22 2017-04-03 22:00:00  Night  Night 
23 2017-04-03 23:00:00  Night  Night 
관련 문제