Pandas:无法将类型<class'pandas.tseries.index.datetimeindex'=“”>转换为Timestamp

时间:2017-04-28 10:43:52

标签: pandas numpy python-datetime datetimeindex

尝试使用标签切片pandas数据帧时出现以下错误消息。

triggerDate = dat.loc[dat.Close <= threshold[0]][:1].index
cutDate= triggerDate.shift(1, 'd')
dat.truncate(before=triggerDate, after=cutDate)
  

TypeError:无法转换输入[DatetimeIndex([&#39; 2010-05-05&#39;],dtype =&#39; datetime64 [ns]&#39;,name = u&#39; Date&#39 ;,freq = None)]类型为Timestamp

我很困惑为什么不能在这里使用datetimeIndex对象来切片这个pandas数据帧,因为从truncating函数的文档来看,这应该有用吗?为什么我仍然需要将datetimeIndex转换为Timestamp?

所以我猜我可能会错过这里的一些细节?任何帮助,将不胜感激。谢谢!

以下是我的示例数据的代码和输出:

type(dat)
  

class&#39; pandas.core.frame.DataFrame&#39;

dat.head(5)

             Open   High    Low  Close     Volume  Adj Close  Cash  Position
Date                                                                        
2010-05-03  13.18  13.49  13.18  13.30  106416800  10.747104  11.7    9988.3
2010-05-04  13.07  13.08  12.75  12.85  123207400  10.383480   0.0       0.0
2010-05-05  12.32  12.70  11.59  12.34  198525600   9.971373   0.0       0.0
2010-05-06  12.17  12.51  10.59  11.78  237094700   9.518863   0.0       0.0
2010-05-07  11.95  11.97  10.95  11.51  261066500   9.300689   0.0       0.0
triggerDate
  

DatetimeIndex([&#39; 2010-05-05&#39;],dtype =&#39; datetime64 [ns]&#39;,name = u&#39; Date&#39;,freq = None)

type(triggerDate)
  

class&#39; pandas.tseries.index.DatetimeIndex&#39;

type(cutDate)
  

class&#39; pandas.tseries.index.DatetimeIndex&#39;

1 个答案:

答案 0 :(得分:2)

我认为转换[0]需要DatetimeIndex作为数组,其中一个值为标量:

triggerDate = dat.loc[dat.Close <= threshold[0]][:1].index[0]

或更好:

triggerDate = dat.index[dat.Close <= threshold[0]][0]