У меня есть база данных flight.csv о взлетах и посадках в конкретном аэропорту и времени, связанном с каждым шагом полета, т. Е. Вылетом, колесами на земле, колесами на земле, прибытием, фактическим прибытием и вылетом и т. Д.
Теперь я хочу преобразовать время, указанное в базе данных, в виде чисел с плавающей точкой в 24-часовом формате. Например: 13:45 - 1345.0, 00:02 - 0002.0
Два из этих столбцов (Scheduled_departure)и запланированное прибытие) указаны в целых числах, поэтому мне очень легко преобразовать их во время следующим образом:
flights['SCHEDULED_DEPARTURE'] = flights['SCHEDULED_DEPARTURE'].apply(lambda x: '{0:0>4}'.format(x))
(для добавления нулей перед номером времени)
flights['SCHEDULED_DEPARTURE'] = pd.to_datetime(flights['SCHEDULED_DEPARTURE'],format= '%H%M').dt.time
(Для фактического преобразования`
Но так как другие столбцы находятся в числах с плавающей запятой, я не могу напрямую использовать astype (), поскольку он создает ошибку для десятичного числа.
Поэтому я попытался обойти мой путь:
pd.to_numeric(flights.DEPARTURE_TIME, downcast = 'integer')
(чтобы удалить десятичные дроби)
flights.DEPARTURE_TIME = flights.DEPARTURE_TIME.astype(dtype='int32')
(Для резервированиядля следующего шага)
flights['DEPARTURE_TIME'] = flights['DEPARTURE_TIME'].apply(lambda x: '{0:0>4}'.format(x))
(чтобы добавить нулиперед числом)
flights['DEPARTURE_TIME'] = pd.to_datetime(flights['DEPARTURE_TIME'],format= '%H%M').dt.time
(для фактического преобразования времени)
Но после этого шага выдается ошибка:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, box, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
290 try:
--> 291 values, tz = conversion.datetime_to_datetime64(arg)
292 return DatetimeIndex._simple_new(values, name=name, tz=tz)
pandas/_libs/tslibs/conversion.pyx in
pandas._libs.tslibs.conversion.datetime_to_datetime64()
TypeError: Unrecognized value type: <class 'str'>
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-23-a3defb9ecd52> in <module>
----> 1 flights['DEPARTURE_TIME'] =
pd.to_datetime(flights['DEPARTURE_TIME'],format= '%H%M').dt.time
~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in
to_datetime(arg, errors, dayfirst, yearfirst, utc, box, format, exact,
unit, infer_datetime_format, origin, cache)
590 else:
591 from pandas import Series
--> 592 values = convert_listlike(arg._values, True, format)
593 result = Series(values, index=arg.index, name=arg.name)
594 elif isinstance(arg, (ABCDataFrame, compat.MutableMapping)):
~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in
_convert_listlike_datetimes(arg, box, format, name, tz, unit, errors,
infer_datetime_format, dayfirst, yearfirst, exact)
292 return DatetimeIndex._simple_new(values, name=name, tz=tz)
293 except (ValueError, TypeError):
--> 294 raise e
295
296 if result is None:
~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in
_convert_listlike_datetimes(arg, box, format, name, tz, unit, errors,
infer_datetime_format, dayfirst, yearfirst, exact)
259 try:
260 result, timezones = array_strptime(
--> 261 arg, format, exact=exact, errors=errors)
262 if '%Z' in format or '%z' in format:
263 return _return_parsed_timezone_results(
pandas/_libs/tslibs/strptime.pyx in
pandas._libs.tslibs.strptime.array_strptime()
ValueError: unconverted data remains: 0
Помогите мне преобразовать эти числа с плавающей точкой во время.
Я не могу преобразовать целое число напрямую, поскольку для даты и времени необходим правильный формат, включая нули.
Ожидаемая версия DEPARTURE_TIME выглядит следующим образом:
0 08:00:00
1 08:30:00
2 19:10:00
3 15:15:00
4 14:27:00
Name: SCHEDULED_DEPARTURE, dtype: object