tired coder
tired coder

Reputation: 21

How to find out whether it is Day or Night using Timestamp

I want to find out whether it is day or night from the "timestamp" column in my data frame. The time stamp columns have values as follows: 20:0 , 14:30, 6:15, 5:0, 4:0 etc.

I used a for loop but it randomly generated day and night.

for x in data['timestamp']:
if x> '12:00':
     print('Day')

 else:
     print('Night')

I want a column beside my timestamp column which has values as "Day" whenever the timestamp is between 6:00am to 18:00 and "Night" when the timestamp is between 18:01 to 5:59 am.

Upvotes: 0

Views: 1794

Answers (3)

SM Abu Taher Asif
SM Abu Taher Asif

Reputation: 2331

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")

Upvotes: 1

jezrael
jezrael

Reputation: 863256

Convert values to timedeltas with to_timedelta and compare by Series.between, then create new column by 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

Upvotes: 2

Mureinik
Mureinik

Reputation: 311893

I'd take the hours part, parse it as int, and check if it's between 6 and 18:

hour = int(x.split(':'))[0]
if hour >= 6 and hour < 18:
    print('Day')
else:
    print('Night')

Upvotes: 0

Related Questions