Разделить дату и время в пандах

Итак, у меня есть этот набор данных в пандах, и я хочу провести на нем анализ временных рядов. Я использовал pd.read_csv для импорта набора данных и назвал его «df». Затем я проверил первые 5 столбцов набора данных с помощью функции df.head ().

df.head ()

        Date                ARTICLES                Detail  
0   2018-070-2 10:54:00   DUBIC MALT                CASH
1   2018-070-2 10:54:00  ANGEL COTTON-BUD           CASH
2   2018-070-2 10:54:00  RIBENA 1LITTER             CASH
3   2018-07-02 10:54:00  BOTTLE WATER 75CL          CASH
4   2018-07-02 10:54:00  LWAYS CLASSIC THICK LONG   CASH

Теперь я хочу разделить столбец даты на «День», например, 2018-07-02, и время, например, 10:54:00 в пандах.

Я пробовал использовать функцию rsplit, но она выдает ошибки.

Вам действительно нужны отдельные колонки Date и Time? Если вы вместо этого преобразуете столбец в dtype datetime с помощью pd.to_datetime, вы получите доступ ко всей этой информации и получите доступ к множеству встроенных методов, которые значительно упрощают работу с датами и временем, чем манипулирование строками. См. документы, чтобы узнать, как предлагается анализ временных рядов с помощью pandas.

ALollz 06.12.2018 15:53

Сообщите пробный код и сообщение об ошибке.

Mirko Ebert 06.12.2018 15:53

Ваши первые 3 записи имеют нечетный формат даты. И @ALollz хорошо замечает, вам не нужно много времени разделять дату и время.

Scott Boston 06.12.2018 15:57

ваши данные повреждены ...

BENY 06.12.2018 16:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
4
4 518
3

Ответы 3

Вы можете попробовать создать два новых столбца, например День и Время, из df['Date'].

df['Day'] = [d.date() for d in df['Date']]
df['Time'] = [d.time() for d in df['Date']]

ДЕМО:

import pandas as pd
df = pd.DataFrame({'Date': pd.date_range('2018-07-02 10:54:00', periods=5)})
df['Day'] = [d.date() for d in df['Date']]
df['Time'] = [d.time() for d in df['Date']]
print(df)

Видеть:https://repl.it/repls/HonoredFirstMicrokernel

Это сработало отлично. Спасибо!!

Adeola Adesina 06.12.2018 16:09

@AdeolaAdesina Добро пожаловать, удачи.

Always Sunny 06.12.2018 16:14

Быстрый вопрос @Curious_MI. А что, если бы у меня были другие столбцы в исходном наборе данных, как мне настроить код для их размещения. Видя, что здесь df показывает только дату, день и время?

Adeola Adesina 06.12.2018 16:24

Не должно быть никаких проблем, если у вас есть другие столбцы, код - это просто демонстрация, вы можете использовать существующий df, который может иметь столько столбцов, сколько хотите, вам просто нужно разделить столбец Дата на еще 2 столбца, например День и время.

Always Sunny 06.12.2018 16:27

Во-первых, вам нужно преобразовать столбец Date в Datetime Pandas:

In [1991]: df.Date = df.Date.apply(pd.to_datetime)

Затем вы можете разделить столбец Date на 2 новых столбца следующим образом:

In [1993]: df['Day'] = [d.date() for d in df['Date']]
      ...: df['Time'] = [d.time() for d in df['Date']]
      ...: 

In [1994]: df
Out[1994]: 
                 Date    Day         Time
0 2018-07-02 10:54:00  2018-07-02  10:54:00
1 2018-07-02 10:54:00  2018-07-02  10:54:00
2 2018-07-02 10:54:00  2018-07-02  10:54:00
3 2018-07-02 10:54:00  2018-07-02  10:54:00
4 2018-07-02 10:54:00  2018-07-02  10:54:00

assign и dt аксессуар

df.assign(Date=df.Date.dt.date, Time=df.Date.dt.time)

         Date      Time
0  2018-07-02  10:54:00
1  2018-07-02  10:54:00
2  2018-07-02  10:54:00
3  2018-07-02  10:54:00
4  2018-07-02  10:54:00

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

Adeola Adesina 06.12.2018 16:53
assign предоставляет копию фрейма данных с новыми столбцами, указанными в вызове assign.
piRSquared 06.12.2018 16:54

Другие вопросы по теме