Я работаю с данными о погоде и пытаюсь рассчитать количество минут в дневное время, которые соответствуют почасовым наблюдениям в моей серии.
London = pd.read_csv(root_dir + 'London.csv',
usecols=['date_time','London_sunrise','London_sunset'],
parse_dates=['date_time'])
London.set_index(London['date_time'], inplace =True)
London['London_sunrise'] = pd.to_datetime(London['London_sunrise']).dt.strftime('%H:%M')
London['London_sunset'] = pd.to_datetime(London['London_sunset']).dt.strftime('%H:%M')
London['time'] = pd.to_datetime(London['date_time']).dt.strftime('%H:%M')
London['London_sun_mins'] = np.where(London['time']>=London['London_sunrise'], '60', '0')
London.head(6)
Фрейм данных:
date_time time London_sunrise London_sunset London_sun_mins
2019-05-21 00:00:00 00:00 05:01 20:54 0
2019-05-21 01:00:00 01:00 05:01 20:54 0
2019-05-21 02:00:00 02:00 05:01 20:54 0
2019-05-21 03:00:00 03:00 05:01 20:54 0
2019-05-21 04:00:00 04:00 05:01 20:54 0
2019-05-21 05:00:00 05:00 05:01 20:54 0
2019-05-21 06:00:00 06:00 05:01 20:54 60
Я попытался использовать условные аргументы для генерации количества минут солнечного света в час, ie) 60 для часа полного солнечного света, 0 для ночи.
Когда я пытаюсь использовать временную дельту для генерации разницы между восходом и временем ie) 05:00 и 05:01, ожидаемый результат не возвращается (59).
Простое: London['London_sun_mins'] = np.where(London['time']>=London['London_sunrise'], '60', '0')
Приближается к требуемому выводу, однако, когда я пытаюсь расширить до:
London['London_sun_mins'] = np.where(London['time']>=London['London_sunrise'], London['time'] - London['London_sunrise'], '0')
Возвращается следующая ошибка: unsupported operand type(s) for -: 'str' and 'str'
Кроме того, при расширении, охватывающем как восход, так и закат:
London['sunlightmins'] = London[(London['London_sunrise'] >= London['date_time'] & London['London_sunset'] <= London['date_time'])]
London['London_sun_mins'] = np.where(np.logical_and(np.greater_equal(London['time'],London['London_sunrise']),np.less_equal(London['time'],London['London_sunset'])))
Возвращается та же ошибка. Вся помощь в достижении ожидаемого результата приветствуется!