简体   繁体   English

访问带有索引值的Pandas Data Frame行

[英]Access Pandas Data Frame row with index value

I have a very simple Pandas Data Frame with one index (of type TimedeltaIndex ) and one column named TotalVolume . 我有一个非常简单的Pandas数据框,其中包含一个索引( TimedeltaIndex类型)和一个名为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 . 我希望能够以09:00:00查询这本词典,并获得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. 它在09:05:00正常工作。

What is the most pandatonic way to do it? 什么是最虔诚的方式呢?

For me works loc : 对我来说工作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' 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM