Indexing by datetime pandas dataframe fail
<p>I have the following dataframe <code>df</code>:</p>

<pre><code>                          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
</code></pre>

<p>I want to create a second dataframe with just data from the past 6 hours. </p>

<pre><code>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
</code></pre>

<p>I get the following error:</p>

<blockquote>
  <p>File "pandas/tslib.pyx", line 298, in pandas.tslib.Timestamp.<strong>new</strong>
  (pandas/tslib.c:9013)<br>
  File "pandas/tslib.pyx", line 1330, in
  pandas.tslib.convert_to_tsobject (pandas/tslib.c:25826)</p>
  
  <p>TypeError: Cannot convert input to Timestamp</p>
</blockquote>

<p>How come it doesn't work?</p>

<p>You need add <code>[0]</code>, because you need select first item of list:</p>

<pre><code>last_row = df.tail(1).index[0]
print (last_row)
2016-09-15 11:00:00
</code></pre>

<hr>

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

<p>Better solution is simple select last value of index by <code>[-1]</code>:</p>

<pre><code>last_row = df.index[-1]
print (last_row)
2016-09-15 11:00:00
</code></pre>

python datetime dataframe