問題描述
剛在做淘寶購物用戶行為分析項目,數據是從天池上下載下來的,數據集里面有一個字段是時間戳。時間戳可以理解成還未格式化的時間。
我在用 pandas 中的 to_datetime() 將時間戳轉化為日期時,發生了有趣的事情。
可以看到,下圖中,轉化后的時間是 2017-11-24 17:21:10
。但明明這個數據集在天池的主頁介紹中已經說明了,這個數據集中的數據是2017年11月25日至2017年12月3日之間的淘寶用戶行為數據,那么怎么會出現11月24日這種數據呢?

於是在網上找了時間戳轉日期的在線工具,輸入該日期的時間戳后,看到這樣的結果:

怎么會發生這種事呢?這個問題肯定不能忽視啊。於是開始研究。
可以觀察到,2017-11-24 17:21:10
與 2017-11-25 01:21:10
之間相差了 8 個小時。於是就想到會不會和時區有關?又想到 pandas 是國外團隊開發的,那十有八九是跟時區有關了。
於是上網查資料,從一篇博客得知,pandas 返回的 2017-11-24 17:21:10
這個結果是格林威治標准時間,與北京時間差了 8 小時。又查了 to_datetime() 這個方法的官方文檔,得知有一個參數 origin ,可以指定時間戳的起始時間。
於是將代碼改為,也就是以北京時間為起始時間:
df['Time'] = pd.to_datetime(df['Timestamp'], origin='1970-01-01 08:00:00', unit='s')
運行一下:

問題解決。