尝试使用标签切片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;
答案 0 :(得分:2)
我认为转换[0]
需要DatetimeIndex
作为数组,其中一个值为标量:
triggerDate = dat.loc[dat.Close <= threshold[0]][:1].index[0]
或更好:
triggerDate = dat.index[dat.Close <= threshold[0]][0]