2015-09-27 97 views
4

构建一个系列时失去价值我有一个数据帧td由以下列:从数据帧列

In [111]: td.head(5) 
Out[111]: 
     Date  Time Price 
0 2015-09-21 00:01:26 4303.00 
1 2015-09-21 00:01:33 4303.00 
2 2015-09-21 00:02:21 4303.50 
3 2015-09-21 00:02:21 4303.50 
4 2015-09-21 00:02:31 4303.25 

我的目标是有日期时间和价格的一个系列。

我想:

s = pd.Series(td['Price'], index=pd.to_datetime(td['Date'] + ' ' + td['Time'])) 

但得到的结果:

>>> s 
2015-09-21 00:01:26 NaN 
2015-09-21 00:01:33 NaN 
2015-09-21 00:02:21 NaN 
2015-09-21 00:02:21 NaN 
         .. 
2015-09-25 16:59:58 NaN 
2015-09-25 16:59:58 NaN 
2015-09-25 16:59:58 NaN 
2015-09-25 16:59:59 NaN 
Name: Price, dtype: float64 

所有的 “价格” 值是NaN的。任何暗示我做错了什么?

回答

2

从DataFrame列创建系列并传入索引时,根据新索引,该列将为重新编号为

就你而言,新创建的日期时间索引中的标签最初都没有用于索引列td['Price'],因此返回一系列缺失(NaN)值。

的最简单的解决方案是在td['Price'].values代替经过:

>>> pd.Series(td['Price'].values, index=pd.to_datetime(td['Date']+' '+td['Time']) 
2015-09-21 00:01:26 4303.00 
2015-09-21 00:01:33 4303.00 
2015-09-21 00:02:21 4303.50 
2015-09-21 00:02:21 4303.50 
2015-09-21 00:02:31 4303.25 
... 

使用td['Price'].values意味着从列中的值是在一个NumPy的数组:此没有索引和熊猫不会尝试重新索引值。