Nano Hash - криптовалюты, майнинг, программирование

Извлечь дату из строкового столбца даты и времени в пандах

У меня есть столбец cash_date в кадре данных pandas, который является объектом. Я не могу использовать здесь функцию pandas to_datetime. Форма моего фрейма данных (47654566,5). Мой фрейм данных выглядит так:

cash_date                                amount    id
02-JAN-13 12.00.00.000000000 AM           100       1
13-FEB-13 12.00.00.000000000 AM           200       2
09-MAR-13 12.00.00.000000000 AM           300       3
03-APR-13 12.00.00.000000000 AM           400       4
02-JAN-13 06.26.02.438000000 PM           500       7
17-NOV-18 08.31.47.443000000 PM           700       8

Я пробовал следующие способы -

df.cash_date = pd.to_datetime(df['cash_date'], errors='coerce') # Not working

for i in range(len(df)):
    df.cash_date = df.cash_date.astype(str).str.split('\d\d.\d\d.\d\d.\d\d\d\d\d\d\d\d\d')[i][0] # Not working

I want the data frame looks like s-

cash_date                                amount    id       date
02-JAN-13 12.00.00.000000000 AM           100       1       02-JAN-13
13-FEB-13 12.00.00.000000000 AM           200       2       13-FEB-13
09-MAR-13 12.00.00.000000000 AM           300       3       09-MAR-13
03-APR-13 12.00.00.000000000 AM           400       4       03-APR-13
02-JAN-13 06.26.02.438000000 PM           500       7       02-JAN-13
17-NOV-18 08.31.47.443000000 PM           700       8       17-NOV-18

  • Какой расчет даты вы пытаетесь сделать здесь? Это просто похоже на проблему с конвертацией. 12.01.2019

Ответы:


1

Укажите аргумент format=....

pd.to_datetime(df['cash_date'], format='%d-%b-%y %H.%M.%S.%f %p', errors='coerce')

0   2013-01-02 12:00:00.000
1   2013-02-13 12:00:00.000
2   2013-03-09 12:00:00.000
3   2013-04-03 12:00:00.000
4   2013-01-02 06:26:02.438
5   2018-11-17 08:31:47.443
Name: cash_date, dtype: datetime64[ns]

Подробную информацию о допустимых форматах можно найти на странице http://strftime.org.

Отсюда вы можете перекрыть datetimes с помощью dt.floor:

df['date'] = pd.to_datetime(
    df['cash_date'], format='%d-%b-%y %H.%M.%S.%f %p', errors='coerce'
).dt.floor('D')

df
                         cash_date  amount  id       date
0  02-JAN-13 12.00.00.000000000 AM     100   1 2013-01-02
1  13-FEB-13 12.00.00.000000000 AM     200   2 2013-02-13
2  09-MAR-13 12.00.00.000000000 AM     300   3 2013-03-09
3  03-APR-13 12.00.00.000000000 AM     400   4 2013-04-03
4  02-JAN-13 06.26.02.438000000 PM     500   7 2013-01-02
5  17-NOV-18 08.31.47.443000000 PM     700   8 2018-11-17

OTOH, если вы хотите извлечь компонент даты без разбора даты, есть несколько вариантов:

str.split

df['date'] = df['cash_date'].str.split(n=1).str[0]
df
                         cash_date  amount  id       date
0  02-JAN-13 12.00.00.000000000 AM     100   1  02-JAN-13
1  13-FEB-13 12.00.00.000000000 AM     200   2  13-FEB-13
2  09-MAR-13 12.00.00.000000000 AM     300   3  09-MAR-13
3  03-APR-13 12.00.00.000000000 AM     400   4  03-APR-13
4  02-JAN-13 06.26.02.438000000 PM     500   7  02-JAN-13
5  17-NOV-18 08.31.47.443000000 PM     700   8  17-NOV-18

Или с помощью понимания списка.

df['date'] = [x.split(None, 1)[0] for x in df['cash_date']]
df
                         cash_date  amount  id       date
0  02-JAN-13 12.00.00.000000000 AM     100   1  02-JAN-13
1  13-FEB-13 12.00.00.000000000 AM     200   2  13-FEB-13
2  09-MAR-13 12.00.00.000000000 AM     300   3  09-MAR-13
3  03-APR-13 12.00.00.000000000 AM     400   4  03-APR-13
4  02-JAN-13 06.26.02.438000000 PM     500   7  02-JAN-13
5  17-NOV-18 08.31.47.443000000 PM     700   8  17-NOV-18

Держу пари, это более быстрый из двух вариантов.

12.01.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..