Python 使用datetime.time进行比较和创建列
我用熊猫已经有一段时间了,我相信这是一个愚蠢的问题 我需要在数据帧中创建一列,该列以datetime.time为条件。如果datetime.time<12,则在列中填入“上午”,然后将相同的过程添加到“下午”和“晚上”Python 使用datetime.time进行比较和创建列,python,pandas,datetime,Python,Pandas,Datetime,我用熊猫已经有一段时间了,我相信这是一个愚蠢的问题 我需要在数据帧中创建一列,该列以datetime.time为条件。如果datetime.time
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
导入日期时间
b['time']=['01-01-2000 10:00:00','01-01-2000 15:00:00','01-01-2000 21:00:00']
b['time'].dt.time
(产出)
1 10:00:00
2 15:00:00
3 21:00:00
b['time'].dt.time<12#示例
TypeError:无法将datetime.time与int进行比较
问题是:我无法将datetime.time与int进行比较。如何解决这个问题
非常感谢。我认为您可以使用或按箱子放置标签:
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)
不可能比较时间吗?是否可以添加数据样本和所需输出?添加样本。所需的输出类似于真/假序列。然后使用
b['time'].dt.hour<12
Gosh,我知道这很愚蠢。。。
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