字符串中转换器 Int64 的值更改 Python

Change of value to the converter Int64 in string Python

我无法理解导致日期值在转换时发生变化的原因。

我有以下值“19670619”,类型为 int64。 我需要转换为字符串并保留日期“06/19/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,即使阅读其他转换案例,我也无法理解为什么会发生这种情况。 有人可以帮我吗?

尝试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

我按如下方式解决了我的问题。

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'))