#python #pandas #date #datetime #timestamp
#python #панды #Дата #дата и время #временная метка
Вопрос:
В настоящее время у меня есть столбец даты и времени в этом формате
Datime
Thu Jun 18 23:04:19 0000 2020
Thu Jun 18 23:04:18 0000 2020
Thu Jun 18 23:04:14 0000 2020
Thu Jun 18 23:04:13 0000 2020
Я хочу изменить его на:
Datetime
2020-06-18 23:04:19
2020-06-18 23:04:18
2020-06-18 23:04:14
2020-06-18 23:04:13
Ответ №1:
Предполагая, что вы загрузили фрейм данных pandas, вы можете преобразовать Datetime
столбец в указанный формат с помощью этой функции. Вы можете переименовать эту функцию.
import datetime
def modify_datetime(dtime):
my_time = datetime.datetime.strptime(dtime, '%a %b %d %H:%M:%S %z %Y')
return my_time.strftime('%Y-%m-%d %H:%M:%S')
Первый аргумент strptime
функции — строка даты, а второй аргумент — формат.
Directive, Description
%a Weekday abbreviated
%b Month abbreviated name
%d Day of the month
%H Hour (24-hour format)
%M Minute with zero padding
%S Second with zero padding
%z UTC offset
%Y Full year
После преобразования строки date в datetime
объекты вы можете преобразовать ее обратно в строку с указанным форматом с помощью strftime
функции. Вы можете прочитать больше о форматах здесь.
Наконец, просто измените Datetime
столбец
df['Datetime'] = df['Datetime'].apply(modify_datetime)
Ответ №2:
Вы можете использовать pandas.to_datetime
и pandas.Series.dt.strftime
соответствующим образом:
>>> import pandas as pd
>>> from datetime import datetime
>>> datetime_strs = ["Thu Jun 18 23:04:19 0000 2020", "Thu Jun 18 23:04:18 0000 2020", "Thu Jun 18 23:04:14 0000 2020", "Thu Jun 18 23:04:13 0000 2020"]
>>> d = {'Datetimes': datetime_strs}
>>> df = pd.DataFrame(data=d)
>>> df
Datetimes
0 Thu Jun 18 23:04:19 0000 2020
1 Thu Jun 18 23:04:18 0000 2020
2 Thu Jun 18 23:04:14 0000 2020
3 Thu Jun 18 23:04:13 0000 2020
>>> df['Datetimes'] = pd.to_datetime(df['Datetimes'], format='%a %b %d %H:%M:%S %z %Y')
>>> df
Datetimes
0 2020-06-18 23:04:19 00:00
1 2020-06-18 23:04:18 00:00
2 2020-06-18 23:04:14 00:00
3 2020-06-18 23:04:13 00:00
>>> df['Datetimes'] = df['Datetimes'].dt.strftime('%Y-%m-%d %H:%M:%S')
>>> df
Datetimes
0 2020-06-18 23:04:19
1 2020-06-18 23:04:18
2 2020-06-18 23:04:14
3 2020-06-18 23:04:13