난 당신이 쓰레기통에 의해 라벨 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
이 시간을 비교할 수 없습니다? 데이터 샘플과 원하는 출력을 추가 할 수 있습니까? – jezrael
견본이 추가되었습니다. 원하는 출력은 True/False 시리즈와 같은 것입니다. – Vini
그런 다음'b [ 'time']을 사용하십시오 .dt.hour <12' – jezrael