Как преобразовать столбец даты pandas dataframe в формат «дд / мм / гггг% H:% M» в «гггг / мм / дд% H:% M» - PullRequest
0 голосов
/ 30 октября 2018

У меня есть фрейм данных в формате 'дд / мм / гггг% H:% M'.

Date                Price
29/10/2018 19:30    163.09
29/10/2018 20:00    211.95
29/10/2018 20:30    205.86
29/10/2018 21:00    201.39
29/10/2018 21:30    126.68
29/10/2018 22:00    112.36
29/10/2018 22:30    120.94

Я хочу этот кадр данных в формате 'гггг / мм / дд% H:% M' следующим образом.

Date                Price
2018/29/10 19:30    163.09
2018/29/10 20:00    211.95
2018/29/10 20:30    205.86
2018/29/10 21:00    201.39
2018/29/10 21:30    126.68
2018/29/10 22:00    112.36
2018/29/10 22:30    120.94

Я пытался df['Date'] = pd.to_datetime(df['Date]) но это дает следующий результат, который я не ищу

Date                   Price
2018-29-10 19:30:00    163.09
2018-29-10 20:00:00    211.95
2018-29-10 20:30:00    205.86
2018-29-10 21:00:00    201.39

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Панды хранят datetime как целые числа

Когда вы говорите it gives result as following, вы видите только строковое представление этих базовых целых чисел. Вы не должны неправильно истолковывать это как то, как Pandas хранит ваши данные или, действительно, как данные будут представлены при экспорте в другой формат.

Преобразовать в object dtype

Вы можете использовать pd.Series.dt.strftime для преобразования вашей серии в последовательность строк. Это будет иметь object dtype, который представляет собой последовательность указателей:

df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%Y/%m/%d %H:%M')

Вы потеряете все преимущества векторизации, поэтому вам следует стремиться выполнять эту операцию только в случае необходимости и как можно позже.

0 голосов
/ 30 октября 2018

Используйте strftime для преобразования даты в формат строки:

df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%Y/%m/%d %H:%M')

print (df)
               Date   Price
0  2018/10/29 19:30  163.09
1  2018/10/29 20:00  211.95
2  2018/10/29 20:30  205.86
3  2018/10/29 21:00  201.39
4  2018/10/29 21:30  126.68
5  2018/10/29 22:00  112.36
6  2018/10/29 22:30  120.94

print (type(df.loc[0, 'Date']))
<class 'str'>

print (df['Date'].dtype)
object

Поэтому, если вы хотите работать с функцией datetimelike, используйте только to_datetime, формат YYYY-MM-DD HH:MM:SS:

df['Date'] = pd.to_datetime(df['Date'])
print (df)
                 Date   Price
0 2018-10-29 19:30:00  163.09
1 2018-10-29 20:00:00  211.95
2 2018-10-29 20:30:00  205.86
3 2018-10-29 21:00:00  201.39
4 2018-10-29 21:30:00  126.68
5 2018-10-29 22:00:00  112.36
6 2018-10-29 22:30:00  120.94

print (type(df.loc[0, 'Date']))
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

print (df['Date'].dtype)
datetime64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...