按日期时间进行索引pandas数据帧失败

时间:2016-09-30 08:35:20

标签: python datetime dataframe

我有以下数据框df

                          Candy       Apple      Banana
2016-09-14 19:00:00  109.202060  121.194138  130.372082
2016-09-14 20:00:00  109.199083  121.188817  130.380736
2016-09-14 21:00:00  109.198894  121.180553  130.366054
2016-09-14 22:00:00  109.192076  121.148722  130.307342
2016-09-14 23:00:00  109.184374  121.131068  130.276691
2016-09-15 00:00:00  109.191582  121.159304  130.316872
2016-09-15 01:00:00  109.183895  121.133062  130.269966
2016-09-15 02:00:00  109.193550  121.174708  130.337563
2016-09-15 03:00:00  109.196597  121.153076  130.274463
2016-09-15 04:00:00  109.195608  121.168936  130.276042
2016-09-15 05:00:00  109.211957  121.208946  130.330430
2016-09-15 06:00:00  109.210598  121.214454  130.365404
2016-09-15 07:00:00  109.224667  121.285534  130.508604
2016-09-15 08:00:00  109.220784  121.248828  130.389024
2016-09-15 09:00:00  109.199448  121.155439  130.212834
2016-09-15 10:00:00  109.226648  121.276439  130.427642
2016-09-15 11:00:00  109.239957  121.311719  130.462447

我想创建一个仅包含过去6小时数据的第二个数据框。

df.index = pd.to_datetime(df.index,infer_datetime_format=True)

last_row = df.tail(1).index

six_hour = last_row - timedelta(hours=6)

df_6hr = df.loc[six_hour:last_row]
print df_6hr

我收到以下错误:

  

文件“pandas / tslib.pyx”,第298行,在pandas.tslib.Timestamp。 new   (熊猫/ tslib.c:9013)
  文件“pandas / tslib.pyx”,第1330行,in   pandas.tslib.convert_to_tsobject(pandas / tslib.c:25826)

     

TypeError:无法将输入转换为时间戳

怎么会不起作用?

1 个答案:

答案 0 :(得分:2)

您需要添加[0],因为您需要选择列表中的第一项:

last_row = df.tail(1).index[0]
print (last_row)
2016-09-15 11:00:00
last_row = df.tail(1).index
print (last_row)
DatetimeIndex(['2016-09-15 11:00:00'], dtype='datetime64[ns]', freq=None)

更好的解决方案是通过[-1]选择索引的最后一个值:

last_row = df.index[-1]
print (last_row)
2016-09-15 11:00:00
相关问题