Преобразование строк в даты и удаление не дат в одном столбце фрейма данных - PullRequest
0 голосов
/ 09 января 2019

У меня есть фрейм данных, который я разбил из одного столбца на два столбца, как это.

df_all_files = pd.DataFrame(df_all_files.string.str.split('.',1).tolist(), columns = ['string','the_date'])

Это дает мне несколько расширений файлов и несколько дат в одном столбце. Я хочу, чтобы все, что выглядит, могло бы быть датой в фактическую дату, и удаляло все, что не является датой. Это выполнимо?

Вот пример того, что у меня есть.

                                                                     string     the_date

-rw-r--r--   64 30067    10224         616 Nov 01 17:46 ASEJPN_ModelHolidays    20181101
-rw-r--r--   64 30067    10224         616 Dec 03 19:23 ASEJPN_ModelHolidays    20181201
-rw-r--r--   74 30067    10224        4938 Oct 04 03:28 AS1181003               RATE

Я бы хотел, чтобы это выглядело после.

                                                                     string     the_date

-rw-r--r--   64 30067    10224         616 Nov 01 17:46 ASEJPN_ModelHolidays    20181101
-rw-r--r--   64 30067    10224         616 Dec 03 19:23 ASEJPN_ModelHolidays    20181201
-rw-r--r--   74 30067    10224        4938 Oct 04 03:28 AS1181003               181003

Теперь я использую эту однострочник.

df_all_files['the_date'] = df_all_files['the_date'].dt.date

Я получаю эту ошибку.

AttributeError: Can only use .dt accessor with datetimelike values

Я тоже это попробовал.

df_all_files['the_date'] = df_all_files['string'].astype('datetime64[ns]')

Как только он встречает дату, он выдает мне эту ошибку.

ValueError: ('Unknown string format:', 'ach1')

1 Ответ

0 голосов
/ 09 января 2019

Используйте pd.to_datetime, чтобы сначала преобразовать серию в datetime, используя errors='coerce', чтобы обеспечить замену неконвертируемых значений на NaN:

df_all_files['the_date'] = pd.to_datetime(df_all_files['the_date'], errors='coerce').dt.date

Однако я настоятельно рекомендую вам избегать преобразования в dt.date, поскольку это преобразует вашу серию в object dtype серию datetime.date объектов, в отличие от эффективных Pandas datetime серия.

Вот 4 примера проблем, вызванных использованием объектов Python datetime.date или datetime.datetime с Pandas:

  1. TypeError: Невозможно сравнить тип 'Timestamp' с типом 'date'
  2. Разобрать столбец Pandas в Datetime
  3. Почему мой код не выбрал данные из кадра данных Pandas?
  4. Фильтрация данных по пандам по дням
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...