我有以下数据框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:无法将输入转换为时间戳
怎么会不起作用?
答案 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