2016-02-10 80 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