7

I have a very simple Pandas Data Frame with one index (of type TimedeltaIndex) and one column named TotalVolume.

>> print(df)
        TotalVolume
...
09:00:00  143846.153846
09:05:00   84353.846154
09:10:00   46946.153846
09:15:00   46765.384615
09:20:00   53076.923077
09:25:00   31642.307692
09:30:00   48269.230769
...

I would like to be able to query this dictionary with 09:00:00 for example and get 143846.153846. For information this is the structure of the index:

>> print(df.index)
TimedeltaIndex(['07:00:00', '07:05:00', '07:10:00', '07:15:00', '07:20:00', '07:25:00', '07:30:00', '07:35:00', '07:40:00', '07:45:00', '07:50:00', '07:55:00', '08:00:00', '08:05:00', '08:10:00', '08:15:00', '08:20:00', '08:25:00', '08:30:00', '08:35:00', '08:40:00', '08:45:00', '08:50:00', '08:55:00', '09:00:00', '09:05:00', '09:10:00', '09:15:00', '09:20:00', '09:25:00', '09:30:00', '09:35:00', '09:40:00', '09:45:00', '09:50:00', '09:55:00', '10:00:00', '10:05:00', '10:10:00', '10:15:00', '10:20:00', '10:25:00', '10:30:00', '10:35:00', '10:40:00', '10:45:00', '10:50:00', '10:55:00', '11:00:00', '11:05:00', '11:10:00', '11:15:00', '11:20:00', '11:25:00', '11:30:00', '11:35:00', '11:40:00', '11:45:00', '11:50:00', '11:55:00', '12:00:00', '12:05:00', '12:10:00', '12:15:00', '12:20:00', '12:25:00', '12:30:00', '12:35:00', '12:40:00', '12:45:00', '12:50:00', '12:55:00', '13:00:00', '13:05:00', '13:10:00', '13:15:00', '13:20:00', '13:25:00', '13:30:00', '13:35:00', '13:40:00', '13:45:00',
            '13:50:00', '13:55:00', '14:00:00', '14:05:00', '14:10:00', '14:15:00', '14:20:00', '14:25:00', '14:30:00', '14:35:00', '14:40:00', '14:45:00', '14:50:00', '14:55:00', '15:00:00'],
           dtype='timedelta64[ns]', freq=None)

When I do,

print(df['09:00:00'])

I have

        TotalVolume
 09:00:00  143846.153846
 09:05:00   84353.846154
 09:10:00   46946.153846
 09:15:00   46765.384615
 09:20:00   53076.923077
 09:25:00   31642.307692
 09:30:00   48269.230769
 09:35:00   35715.384615
 09:40:00   38576.923077
 09:45:00   37211.538462
 09:50:00   41803.846154
 09:55:00   37503.846154

It seems like the filter is not working as I would like. It works correctly for 09:05:00 though.

What is the most pandatonic way to do it?

1 Answer 1

5

For me works loc:

print (df)
            TotalVolume
09:00:00  143846.153846
09:05:00   84353.846154
09:10:00   46946.153846
09:15:00   46765.384615
09:20:00   53076.923077
09:25:00   31642.307692
09:30:00   48269.230769

print (df.index)
TimedeltaIndex(['09:00:00', '09:05:00', '09:10:00', '09:15:00', '09:20:00',
                '09:25:00', '09:30:00'],
               dtype='timedelta64[ns]', freq=None)

print(df.loc['09:00:00', 'TotalVolume'])
143846.153846

print(df.loc['0 day 09:00:00', 'TotalVolume'])
143846.153846

print(df.loc['09:00:00'])
TotalVolume    143846.153846
Name: 0 days 09:00:00, dtype: float64

But:

print(df['09:05:00'])

KeyError: '09:05:00'

And:

print(df['09:05:00':'09:20:00'])

           TotalVolume
09:05:00  84353.846154
09:10:00  46946.153846
09:15:00  46765.384615
09:20:00  53076.923077
Sign up to request clarification or add additional context in comments.

1 Comment

Great! Thanks a lot for this answer. Very clean! I confirm this works.

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.