2016-04-08 42 views
5

Tôi đang sử dụng Pandas để đọc một Sas bộ dữ liệu sử dụng read_saschuyển đổi một datetime SAS trong Pandas

Có một biến datetime trong tập dữ liệu SAS, xuất hiện trong Pandas như:

1.775376e+09

Khi tôi chuyển đổi nó thành str ngày là:

1775376002.0

Ngày tương ứng trong SAS (không có trong dữ liệu Pandas của tôi) dường như là một DATETIME21.2

04APR2016:08:00:02.00

tôi đã cố gắng để chuyển đổi nó bằng cách sử

pd.to_datetime(df.mysasdate,format='%d%m%Y%H%M%S') không thành công

TypeError: 'float' object is unsliceable 

Bất kỳ ý tưởng nào? Cảm ơn!

+1

Kiểm tra câu hỏi này. Mô-đun datetime có trình chuyển đổi bạn cần, tôi nghĩ: http://stackoverflow.com/a/26923644/4633893 –

Trả lời

9

SAS date value

is a value that represents the number of days between January 1, 1960, and a specified date. link

Vì vậy, bạn có thể chuyển đổi số to_timedelta và thêm date1960-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] 
+0

tuyệt vời! sẽ hoạt động. Cảm ơn jezrael –

+0

thực sự tôi nhận được 'ValueError: dữ liệu thời gian '1775376002.0' không phù hợp với định dạng '% d% b% Y:% H:% M:% S.% f' (đối sánh)' –

+0

Tôi nghĩ bạn đã sử dụng định dạng những gì ngày dường như giống như trong SAS –

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