私はあなたがビンによってラベルに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