在Pandas中转换SAS日期时间

ℕʘʘ*_*ḆḽḘ 5 python datetime sas pandas

我正在使用Pandas来读取Sas数据集read_sas

SAS数据集中有一个datetime变量,它在Pandas中显示为:

1.775376e+09

一旦我将它转换为str日期是:

1775376002.0

SAS中的相应日期(不在我的Pandas数据集中)似乎是一个 DATETIME21.2

04APR2016:08:00:02.00

我试着用它来转换它

pd.to_datetime(df.mysasdate,format='%d%m%Y%H%M%S') 没有成功

TypeError: 'float' object is unsliceable
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

jez*_*ael 10

SAS日期值

是一个值,表示1960年1月1日到指定日期之间的天数.链接

所以你可以转换数字to_timedelta并添加date 1960-01-01 00:00:00

df = pd.DataFrame({'mysasdate':[1775376002.0, 1775377002.0]})
print (df)
      mysasdate
0  1.775376e+09
1  1.775377e+09

print (pd.to_timedelta(df['mysasdate'], unit='s') + pd.datetime(1960, 1, 1)) 
0   2016-04-04 08:00:02
1   2016-04-04 08:16:42
Name: mysasdate, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)