2016-04-08 13 views
5

में एक एसएएस दिनांक परिवर्तित मैं पांडा उपयोग कर रहा हूँ एक सास का उपयोग कर डाटासेट पढ़ने के लिए read_sasपांडा

वहाँ एसएएस डेटासेट में datetime चर, जो के रूप में पांडा में प्रकट होता है:

1.775376e+09

एक बार मैं यह str में बदलने का दिनांक है:

1775376002.0

एसएएस (मेरी पांडा डेटासेट में नहीं) में इसी तारीख एक DATETIME21.2

04APR2016:08:00:02.00

मैं

pd.to_datetime(df.mysasdate,format='%d%m%Y%H%M%S') का उपयोग कर इसे परिवर्तित करने के लिए कोई सफलता

TypeError: 'float' object is unsliceable 
साथ की कोशिश की प्रतीत होता है

कोई विचार? धन्यवाद!

+1

चेक कर सकते हैं। मॉड्यूल डेटाटाइम में कनवर्टर की ज़रूरत है, मुझे लगता है: http://stackoverflow.com/a/26923644/4633893 –

उत्तर

9

SAS date value

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

तो तुम संख्या to_timedelta बदलने और इस सवाल आउट एड 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

उत्कृष्ट! वह काम करेगा। धन्यवाद जेज़राइल –

+0

असल में मुझे 'वैल्यूएरर: टाइम डेटा' 1775376002.0 'प्रारूप'% d% b% वाई से मेल नहीं खाता है:% एच:% एम:% एस% एफ '(मैच) ' –

+0

मुझे लगता है कि आपने प्रारूप का उपयोग किया एसएएस में तारीख कैसा दिखता है –