Как правильно конвертировать строку даты и времени в формат датывремени?
Данные даты и времени берутся из датасета, где они записаны в следующим образом:
(datetime.datetime(2021, 11, 3, 11, 0, 3, tzinfo=datetime.timezone(datetime.timedelta(0), 'UTC')),)
(datetime.datetime(2021, 11, 3, 11, 0, 15, tzinfo=datetime.timezone(datetime.timedelta(0), 'UTC')),)
(datetime.datetime(2021, 11, 3, 11, 0, 16, tzinfo=datetime.timezone(datetime.timedelta(0), 'UTC')),)
Не могу понять, как их преобразовать к формату датывремени?
Приведенные пример - это выборка одной строки из столбца датасета, если смотреть на тип данных, то это будет str.
print(my_df['datetime'][0])
print(type(my_df['datetime'][0]))
(datetime.datetime(2021, 11, 3, 11, 0, 3,
tzinfo=datetime.timezone(datetime.timedelta(0), 'UTC')),)
<class 'str'>
Ответы (2 шт):
Автор решения: Dmitry
→ Ссылка
Сложно понять, что вы подразумеваете, но сейчас это тип данных tuple. Обратиться к нему можно по индексу. То есть я создам переменную, куда положу ваши данные и поиграюсь
>>> import datetime
>>> a = (datetime.datetime(2021, 11, 3, 11, 0, 3, tzinfo=datetime.timezone(datetime.timedelta(0), 'UTC')),)
>>> type(a) # спросим какой тип данных у переменной а
<class 'tuple'>
>>> type(a[0]) # здесь обращение по индексу к нулевому члену кортежа
<class 'datetime.datetime'>
>>> a[0].isoformat() # здесь говорю, что нулевую запись кортежа пробразовать в формат ISO
'2021-11-03T11:00:03+00:00'
Автор решения: strawdog
→ Ссылка
Насколько я понял, данные формата datetime хранятся у вас в csv как есть, то есть, при прочтении в датафрейм они получаются в строковом формате.
В таком случае предлагаю сделать так:
dates = pd.DataFrame(df['datetime'].str.extractall('(\d+)').unstack().values[:,:-1].astype(int), columns=["year", "month", "day", "hour", "minute", "second"])
df["new_datetime"] = pd.to_datetime(dates)
df = df.drop("datetime", axis=1)
теперь ваш df:
new_datetime
0 2021-11-03 11:00:03
1 2021-11-03 11:00:15
2 2021-11-03 11:00:16
ну и тип данных:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 1 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 new_datetime 3 non-null datetime64[ns]
dtypes: datetime64[ns](1)