2016-02-10 118 views
1

我試圖將我的這些時間戳轉換爲%Y-%m-%d %H:%M格式。這裏的數據樣本:使用帶時間戳的熊貓to_datetime

0 1450753200 
1 1450756800 
2 1450760400 
3 1450764000 
4 1450767600 
Name: ohlcv_start_date, dtype: int64 

有人能解釋這是什麼類型的時間戳,我需要他們正確地轉換,因爲當我用什麼代碼:

pd.to_datetime(df[TS], unit='ms').dt.strftime('%Y-%m-%d %H:%M') 

它的時間轉換成:

0  1970-01-01 00:00 
1  1970-01-01 00:00 
2  1970-01-01 00:00 
3  1970-01-01 00:00 
4  1970-01-01 00:00 

哪項不正確

編輯:感謝密友先生。

我實際上想要做的是通過時間戳合併不同資產的值。每個資產的開始和結束時間略有不同,並在分析似乎還有在數據方面的差距:

market_trading_pair next_future_timestep_return ohlcv_start_date \ 
0  Poloniex_ETH_BTC     3.013303e-03 2015-12-22 03  
1  Poloniex_ETH_BTC     3.171481e-03 2015-12-22 05 
2  Poloniex_ETH_BTC    -1.381575e-03 2015-12-22 07 
3  Poloniex_ETH_BTC    -4.327704e-03 2015-12-22 08 

我能想到的解決這個問題最好是建立一個新的數據幀,並在行與補時間戳增加了一個小時,從這裏我可以簡單合併資產數據。任何想法如何產生升序timstamps?

回答

6

通行證unit='s'得到的值,因爲它是epoch time

In [106]: 
pd.to_datetime(df['timestamp'], unit='s') 
Out[106]: 
index 
0 2015-12-22 03:00:00 
1 2015-12-22 04:00:00 
2 2015-12-22 05:00:00 
3 2015-12-22 06:00:00 
4 2015-12-22 07:00:00 
Name: timestamp, dtype: datetime64[ns] 

如果你希望你可以轉換成字符串:

In [107]: 

pd.to_datetime(df['timestamp'], unit='s').dt.strftime('%Y-%m-%d %H:%M') 
Out[107]: 
index 
0 2015-12-22 03:00 
1 2015-12-22 04:00 
2 2015-12-22 05:00 
3 2015-12-22 06:00 
4 2015-12-22 07:00 
Name: timestamp, dtype: object 
+0

EdChum再次做它! –

+0

@EdChum對於獎勵積分,我們如何填入日期爲空的數據框列,遞增1小時,從t1開始到t2結束。 –

+0

如果你有一個新的問題,那麼你應該發佈一個新的問題,除了這應該工作:'pd.date_range(start = t1,end = t2,freq ='H')' – EdChum