2014-11-14 10 views
5

Bu, muhtemelen basit bir çözümdür, ancak SAS datetime sayısını (1/1/1960'dan bu yana geçen saniye sayısı) nasıl değiştirebilirim? Pandaların içindeki değerlerden bir örneği sütun denedim 1716470000.SAS numeric'i python datetime birimine dönüştürün

geçerli:

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

ve ben gibi rakamları elde '1970-01-01 00: 00: 01,725480'

+2

İstenmeyen tavsiye: Eğer istenen çıktı sağlarsanız gerçekten Cevap Gönderen yardımcı olur . Başka bir deyişle, 1970'lerin tarihlerinin muhtemelen yanlış olduğunu biliyoruz, ancak hala ne elde etmeyi beklediğinizi bilmiyoruz. –

cevap

6

Sen olacak lüzum yerleşik datetime modülü:

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

: Yani

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

Eğer sastime adlı bir sütun ile bir dataframe varsa, bunu yapabilirsiniz:

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

MÜKEMMEL !! Çok teşekkürler, bu gerçekten kullanışlı olacak. – Chris

+1

@Chris note: kaynak verilerinin türüne bağlı olarak, '' '' düz 'ol' öğesine zorlamanız gerekebilir. Cevabını buna göre revize edeceğim. –