簡體   English   中英

將日期從int64轉換為datetime

[英]Convert date from int64 to datetime

我在pandas數據框中有一個int64對象,它應該代表一個日期。

>>> 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年代的日期,這不應該是真的。 誰能告訴我如何在pandas數據框中將int64轉換為datetime。 我認為這是正確的方法。

使用to_datetime參數unit轉換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

你需要傳遞unit='ms'因為它是自Unix Epoch以來的毫秒:

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]值,如果傳遞的值為int64 dtype,則自unix時期以來為納秒

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM