我想从数据框中的“时间戳”列中查找白天还是晚上。时间戳列的值如下: 20:0,14:30、6:15、5:0、4:0等
我使用了for循环,但它是日夜随机产生的。
for x in data['timestamp']:
if x> '12:00':
print('Day')
else:
print('Night')
我希望在我的时间戳列旁边创建一个列,该列的值在时间戳介于上午6:00至18:00之间为“天”,而时间戳为介于18:01至上午5:59之间的“夜晚”。 >
答案 0 :(得分:1)
使用to_timedelta
将值转换为时间增量,并使用Series.between
进行比较,然后使用numpy.where
创建新列:
data = pd.DataFrame({
'timestamp' : ['6:00', '18:00', '18:01', '5:59'],
})
mask = (pd.to_timedelta(data['timestamp'] + ':00')
.between(pd.Timedelta('6h'),pd.Timedelta('18h')))
data['new'] = np.where(mask, 'Day', 'Night')
print (data)
timestamp new
0 6:00 Day
1 18:00 Day
2 18:01 Night
3 5:59 Night
答案 1 :(得分:1)
timestamp = ['6:00', '18:00', '18:01', '5:59']
for time in timestamp:
hourMin = time.split(":")
hour = int(hourMin[0])
mint = int(hourMin[1])
if hour>= 6 and hour <= 18:
if(hour == 18):
if(mint > 0):
print("Night\n")
else:
print("Day\n")
else:
print("Day\n")
else:
print("Night\n")
答案 2 :(得分:0)
我会把小时数部分解析为int,然后检查它是否在6到18之间:
hour = int(x.split(':'))[0]
if hour >= 6 and hour < 18:
print('Day')
else:
print('Night')