Изменение значения в конвертере Int64 в строку Python - PullRequest
0 голосов
/ 13 июня 2018

У меня проблема с пониманием того, что приводит к изменению значения даты при конвертации.

У меня есть следующее значение "19670619", введите int64.Мне нужно преобразовать в строку и оставить дату "19.06.1967".

Я сделал это так:

Op['dt'] = pd.to_datetime(Op['dt'], unit = 'ms')
Op['dt'] = Op['dt'].fillna(datetime(2200,12,31))
OP['dt'] = Op['dt'].apply(lambda x: x.strftime('%d/%m/%Y'))

У меня есть результат: 01.01.1970 которыйотличается от первоначальной даты, которую он ввел.Другой способ, которым я попробовал, был:

Op['dt'] = pd.to_datetime(Op['dt'], unit = 'm')
Op['dt'] = Op['dt'].fillna(datetime(2200,12,31))
OP['dt'] = Op['dt'].apply(lambda x: x.strftime('%d/%m/%Y'))

И результат был: 27.05.2007, я не могу понять, почему это произошло, даже при чтении других случаев преобразования.Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я решил свою проблему следующим образом.

Op['dt'] = pd.to_datetime(Op['dt'], format='%Y%m%d')
Op['dt'] = pd.to_datetime(Op['dt'], unit = 's')
Op['dt'] = Op['dt'].fillna(datetime(2200,12,31))
Op['dt'] = Op['dt'].apply(lambda x: x.strftime('%d/%m/%Y'))
0 голосов
/ 13 июня 2018

Попробуйте pd.to_datetime(df["dt"]).dt.strftime('%d/%m/%Y')

Пример:

import pandas as pd
df = pd.DataFrame({"dt" : [ "19670619"]})
df["dt"] = pd.to_datetime(df["dt"]).dt.strftime('%d/%m/%Y')
print(df)

Выход:

           dt
0  19/06/1967
...