2014-11-14 19 views
5

Đây có lẽ là một giải pháp đơn giản, nhưng làm thế nào tôi có thể chuyển đổi số datetime SAS (số giây kể từ 1/1/1960.) Ví dụ về một trong các giá trị bên trong của gấu trúc cột là 1716470000.Chuyển đổi số SAS thành datthon datetime

tôi đã cố gắng:

df['PyDatetime'] = pd.to_datetime(df,infer_datetime_format=True) 

và tôi nhận được số như '1970/01/01 00: 00: 01,725480'

+2

lời khuyên không được yêu cầu: nó thực sự giúp người trả lời nếu bạn cung cấp các đầu ra mong muốn . Nói cách khác, chúng ta biết rằng khoảng năm 1970 có lẽ là sai, nhưng chúng tôi vẫn không biết bạn đang mong đợi điều gì. –

Trả lời

6

Bạn sẽ cần phải được xây dựng trong datetime mô-đun:

import datetime 
sastime = 1716470000 
epoch = datetime.datetime(1960, 1, 1) 
print(epoch + datetime.timedelta(seconds=sastime)) 

nào cho thấy:

datetime.datetime(2014, 5, 23, 13, 13, 20) # is this right? 

Vì vậy, nếu bạn có một dataframe với một cột gọi là sastime, bạn có thể làm:

epoch = datetime.datetime(1960, 1, 1) 
# cast -s- to python int in case it's a string or a numpy.int 
df['datetime'] = df['sastime'].apply(
    lambda s: epoch + datetime.timedelta(seconds=int(s)) 
) 
+0

HOÀN THÀNH !! Cảm ơn rất nhiều điều này sẽ thực sự tiện dụng. – Chris

+1

@ Lưu ý: tùy thuộc vào loại dữ liệu nguồn, bạn có thể cần phải buộc 's' thành một chữ cái ol '' int' đơn giản. Tôi sẽ sửa lại câu trả lời cho phù hợp. –

Các vấn đề liên quan