19

I have a Pandas DataFrame with a DatetimeIndex and one column MSE Loss the index is formatted as follows:

DatetimeIndex(['2015-07-16 07:14:41', '2015-07-16 07:14:48',
           '2015-07-16 07:14:54', '2015-07-16 07:15:01',
           '2015-07-16 07:15:07', '2015-07-16 07:15:14',...]

It includes several days.

I want to select all the rows (all times) of a particular days without specifically knowing the actual time intervals. For example: Between 2015-07-16 07:00:00 and 2015-07-16 23:00:00

I tried the approach outlined here: here

But df[date_from:date_to]

outputs:

KeyError: Timestamp('2015-07-16 07:00:00')

So it wants exact indices. Furthermore, I don't have a datecolumn. Only an index with the dates.

What is the best way to select a whole day by just providing a date 2015-07-16 and then how could I select a specific time range within a particular day?

3 Answers 3

21

Option 1:

Sample df:

df
                      a
2015-07-16 07:14:41  12
2015-07-16 07:14:48  34
2015-07-16 07:14:54  65
2015-07-16 07:15:01  34
2015-07-16 07:15:07  23
2015-07-16 07:15:14   1

It looks like you're trying this without .loc (won't work without it):

df.loc['2015-07-16 07:00:00':'2015-07-16 23:00:00']
                      a
2015-07-16 07:14:41  12
2015-07-16 07:14:48  34
2015-07-16 07:14:54  65
2015-07-16 07:15:01  34
2015-07-16 07:15:07  23
2015-07-16 07:15:14   1

Option 2:

You can use boolean indexing on the index:

df[(df.index.get_level_values(0) >= '2015-07-16 07:00:00') & (df.index.get_level_values(0) <= '2015-07-16 23:00:00')]
Sign up to request clarification or add additional context in comments.

Comments

8

You can use truncate:

begin = pd.Timestamp('2015-07-16 07:00:00')
end = pd.Timestamp('2015-07-16 23:00:00')

df.truncate(before=begin, after=end)

1 Comment

Using truncate requires a sorted datetime index
0

You can use the panda function between_time.

the_timed_df=df["my_time_column"].between_time(date_from,date_to)

Should do what you want if I did not mess some detail up :-)

1 Comment

I think this only works with times, so it would have to be between_time(time_from, time_to).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.