Как узнать, день это или ночь, используя метку времени - PullRequest
0 голосов
/ 26 июня 2019

Я хочу узнать, день это или ночь, из столбца «метка времени» в моем фрейме данных.Столбцы отметок времени имеют следующие значения: 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 утра.

Ответы [ 3 ]

1 голос
/ 26 июня 2019
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")
1 голос
/ 26 июня 2019

Преобразуйте значения в timedeltas с помощью 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
0 голосов
/ 26 июня 2019

Я бы взял часть часов, проанализировал ее как int и проверил, находится ли она между 6 и 18:

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