разделите столбец даты и времени на столбцы даты и времени в панд

#python #pandas

Вопрос:

У меня есть следующий вопрос. У меня есть столбец date_time в моем фрейме данных (и многие другие столбцы).

 df["Date_time"].head()
0    2021-05-15 09:54
1    2021-05-27 17:04
2    2021-05-27 00:00
3    2021-05-27 09:36
4    2021-05-26 18:39
Name: Date_time, dtype: object
 

Я хотел бы разделить эту колонку на две части (дата и время).

Я использую эту формулу, которая отлично работает:

 df["Date"] = ""
df["Time"] = ""

def split_date_time(data_frame):
    for i in range(0, len(data_frame)):
        df["Date"][i] = df["Date_time"][i].split()[0]
        df["Time"][i] = df["Date_time"][i].split()[1]

split_date_time(df)
 

Но есть ли более элегантный способ? Спасибо

Комментарии:

1. Вы можете это сделать df[["Date","Time"]] = df["Date_time"].str.split(expand=True) , если просто захотите разделить их.

Ответ №1:

dt аксессуар может предоставить вам date и отдельно time :

 df["Date"] = df["Date_time"].dt.date
df["Time"] = df["Date_time"].dt.time
 

получить

 >>> df

            Date_time        Date      Time
0 2021-05-15 09:54:00  2021-05-15  09:54:00
1 2021-05-27 17:04:00  2021-05-27  17:04:00
2 2021-05-27 00:00:00  2021-05-27  00:00:00
3 2021-05-27 09:36:00  2021-05-27  09:36:00
4 2021-05-26 18:39:00  2021-05-26  18:39:00
 

Комментарии:

1. Спасибо за ответ, но это не работает: AttributeError: Can only use .dt accessor with datetimelike values

2. @vojtam Да; вам нужно иметь серию, похожую на дату и время, которая является не только строками, поэтому, пожалуйста, сделайте df["Date_time"] = pd.to_datetime(df["Date_time"]) это до приведенного выше кода.