#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"])
это до приведенного выше кода.