2017-07-20 115 views
3

我有一個熊貓數據幀一個Int64對象和應該代表一個日期。轉換日期爲datetime

>>> df.dtypes 
CreatedDate    int64 

很明顯,我想這個轉換成日期時間,所以我做了以下

df["CreatedDate2"] = pd.to_datetime(pd.Series(df["CreatedDate"])) 

>>> df[["CreatedDate","CreatedDate2"]].head() 
    CreatedDate    CreatedDate2 
0 1466461661000 1970-01-01 00:24:26.461661 
1 1464210703000 1970-01-01 00:24:24.210703 
2 1423576093000 1970-01-01 00:23:43.576093 
3 1423611903000 1970-01-01 00:23:43.611903 
4 1423617600000 1970-01-01 00:23:43.617600 
>>> 

然而,這是生產日期是在20世紀70年代,這不應該是真實的。誰能告訴我如何轉換的Int64爲datetime在大熊貓的數據幀。我認爲這是正確的方式。

回答

3

使用參數unitto_datetime的轉換Unix時代時間:

df["CreatedDate2"] = pd.to_datetime(df["CreatedDate"], unit='ms') 
print (df) 

    CreatedDate  CreatedDate2 
0 1466461661000 2016-06-20 22:27:41 
1 1464210703000 2016-05-25 21:11:43 
2 1423576093000 2015-02-10 13:48:13 
3 1423611903000 2015-02-10 23:45:03 
4 1423617600000 2015-02-11 01:20:00 
3

您需要通過unit='ms',因爲它們是自Unix紀元毫秒:

In[51]: 
df['CreatedDate2'] = pd.to_datetime(df['CreatedDate'], unit='ms') 
df 

Out[51]: 
    CreatedDate  CreatedDate2 
0 1466461661000 2016-06-20 22:27:41 
1 1464210703000 2016-05-25 21:11:43 
2 1423576093000 2015-02-10 13:48:13 
3 1423611903000 2015-02-10 23:45:03 
4 1423617600000 2015-02-11 01:20:00 

默認unit參數是'ns'爲它假定datetime64[ns]值其是自Unix紀元納秒如果傳遞的值是int64 D型

+0

嗯,默認參數'ns'在單元,檢查['to_datetime'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html)。 – jezrael