Как обрабатывать столбцы, смешанные с datetime.time и timestamp - PullRequest
0 голосов
/ 21 февраля 2020

Я хотел бы иметь фрейм данных, содержащий все столбцы в формате datetime.time. Но мой оригинальный фрейм данных выглядит так:

        Moorabbin            Mordialloc  Aspendale            Edithvale            Chelsea          
    0   04:48:00             05:00:00    05:05:00             05:10:00             05:15:00 
    1   06:45:00             06:57:00    07:02:00             07:07:00             07:12:00
    2   1900-01-01 00:48:00  NaN         1900-01-01 01:03:00  1900-01-01 01:08:00  1900-01-01 01:13:00  
    3   05:09:00             NaN         NaN                  05:36:00             05:41:00 

Я хотел бы получить:

        Moorabbin            Mordialloc  Aspendale            Edithvale            Chelsea          
    0   04:48:00             05:00:00    05:05:00             05:10:00             05:15:00     
    1   06:45:00             06:57:00    07:02:00             07:07:00             07:12:00
    2   00:48:00             NaN         01:03:00             01:08:00             01:13:00 
    3   05:09:00             NaN         NaN                  05:36:00             05:41:00 

Типы данных этих значений:

> type(test_result.iloc[0,0])
datetime.time
> type(test_result.iloc[2,0])
pandas._libs.tslibs.timestamps.Timestamp

Я пытался to_datetime(format= "%H:%M:%S", error = "coerce"), datetime.strptime(test_result['Moorabbin'],"%H:%M:%S").time() и test_result.astype('datetime64[ns]', copy=True, errors='ignore'), но ничего не получалось. Может ли кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 21 февраля 2020

один подход будет следующим. Убедитесь, что типом является «объект», вы можете преобразовать его в дату и время после того, как вы сократили длину данных до требуемой.

Затем выполните df_new = df.apply(lambda x: x.str.split(' ').str[-1], axis=1)

Ввод

  Moorabbin     Mordialloc  Aspendale   Edithvale   Chelsea
0   4:48:00     5:00:00     5:05:00     5:10:00     5:15:00
1   6:45:00     6:57:00     7:02:00     7:07:00     7:12:00
2   1/1/1900 0:48:00    NaN     1/1/1900 1:03:00    1/1/1900 1:08:00    1/1/1900 1:13:00
3   5:09:00     NaN     NaN     5:36:00     5:41:00

вывод (df_new)

  Moorabbin     Mordialloc  Aspendale   Edithvale   Chelsea
0   4:48:00     5:00:00     5:05:00     5:10:00     5:15:00
1   6:45:00     6:57:00     7:02:00     7:07:00     7:12:00
2   0:48:00     NaN         1:03:00     1:08:00     1:13:00
3   5:09:00     NaN             NaN     5:36:00     5:41:00

Примечание Результат - объект, а не объект даты, но вы можете преобразовать его в объект datetime, использующий pd.to_datetime в этих столбцах.

...