2016-09-29 335 views
1

以劃時代我有一個簡單的數據幀像這樣大熊貓轉換日期時間與正確的時區

   Started 
job 
446 2016-09-29 08:53:24 
447 2016-09-29 08:54:37 
448 2016-09-29 08:55:49 
449 2016-09-29 08:57:00 
450 2016-09-29 08:58:12 

我想這個日期轉換爲使用正確的時區的時代。所以我在做

df['started_epoch']=df['Started'].astype(np.int64)//10**9 

這個工程,但我得到的時代是UTC。我如何獲得EDT?

回答

1

我想你需要tz_localize

#dtype of Started is datetime 
df['started_epoch'] = df.Started.dt.tz_localize('EST5EDT').astype(np.int64)//10**9 
print (df) 
    job    Started started_epoch 
0 446 2016-09-29 08:53:24  1475153604 
1 447 2016-09-29 08:54:37  1475153677 
2 448 2016-09-29 08:55:49  1475153749 
3 449 2016-09-29 08:57:00  1475153820 
4 450 2016-09-29 08:58:12  1475153892 

我嘗試測試它,它似乎它的工作原理:

df['started_epoch'] = df.Started.dt.tz_localize('EST5EDT').astype(np.int64)//10**9 
df['started_epoch1'] = df.Started.astype(np.int64)//10**9 
print (df) 
    job    Started started_epoch started_epoch1 
0 446 2016-09-29 08:53:24  1475153604  1475139204 
1 447 2016-09-29 08:54:37  1475153677  1475139277 
2 448 2016-09-29 08:55:49  1475153749  1475139349 
3 449 2016-09-29 08:57:00  1475153820  1475139420 
4 450 2016-09-29 08:58:12  1475153892  1475139492 
+0

當我試圖做到這一點,我有一個類型的錯誤** * TypeError:long()參數必須是字符串或數字,而不是'Timestamp' – NinjaGaiden

+0

因此'df ['started_epoch'] = df.Started.astype(np.int64)// 10 ** 9'的作品? – jezrael

+0

不適用於後者 – NinjaGaiden