pandas .DataFrame.last выдает целый фрейм данных вместо его части (python) - PullRequest
4 голосов
/ 19 апреля 2020

Я использую history.DataFrame.last ('10s) в кадре данных за 5 часов (300 строк за каждую минуту) и выдает мне весь DataFrame.

С другой стороны, команда history.between_time («22: 06: 00», «22:10:00») дает мне правильную часть.

Знаете ли вы, в чем проблема? Спасибо.

Полный кадр данных и результаты следующие:

    history = 

                           time     low    high    open   close      volume
Index                                                                      
2020-04-18 22:14:00  1587248040  170.27  170.32  170.27  170.32   32.788304
2020-04-18 22:13:00  1587247980  170.20  170.27  170.27  170.20    2.495578
2020-04-18 22:12:00  1587247920  170.20  170.27  170.20  170.27   28.454885
2020-04-18 22:11:00  1587247860  170.10  170.21  170.10  170.21   97.663555
2020-04-18 22:10:00  1587247800  169.80  170.10  169.84  169.94  189.118185
                        ...     ...     ...     ...     ...         ...
2020-04-18 17:15:00  1587230100  167.56  167.73  167.56  167.72   15.257272
2020-04-18 17:14:00  1587230040  167.63  167.72  167.67  167.72    0.405094
2020-04-18 17:13:00  1587229980  167.57  167.61  167.57  167.61   23.075999
2020-04-18 17:12:00  1587229920  167.49  167.61  167.61  167.60    9.606858
2020-04-18 17:11:00  1587229860  167.60  167.73  167.60  167.60   53.414672

[300 rows x 6 columns]

history.last('10s')
Out[84]: 
                           time     low    high    open   close      volume
Index                                                                      
2020-04-18 22:14:00  1587248040  170.27  170.32  170.27  170.32   32.788304
2020-04-18 22:13:00  1587247980  170.20  170.27  170.27  170.20    2.495578
2020-04-18 22:12:00  1587247920  170.20  170.27  170.20  170.27   28.454885
2020-04-18 22:11:00  1587247860  170.10  170.21  170.10  170.21   97.663555
2020-04-18 22:10:00  1587247800  169.80  170.10  169.84  169.94  189.118185
                        ...     ...     ...     ...     ...         ...
2020-04-18 17:15:00  1587230100  167.56  167.73  167.56  167.72   15.257272
2020-04-18 17:14:00  1587230040  167.63  167.72  167.67  167.72    0.405094
2020-04-18 17:13:00  1587229980  167.57  167.61  167.57  167.61   23.075999
2020-04-18 17:12:00  1587229920  167.49  167.61  167.61  167.60    9.606858
2020-04-18 17:11:00  1587229860  167.60  167.73  167.60  167.60   53.414672

[300 rows x 6 columns]

history.between_time('22:06:00','22:10:00')
Out[82]: 
                           time     low    high    open   close      volume
Index                                                                      
2020-04-18 22:10:00  1587247800  169.80  170.10  169.84  169.94  189.118185
2020-04-18 22:09:00  1587247740  169.90  169.97  169.90  169.97   11.503376
2020-04-18 22:08:00  1587247680  169.65  169.90  169.65  169.90  103.496717
2020-04-18 22:07:00  1587247620  169.63  169.65  169.65  169.63    2.708217
2020-04-18 22:06:00  1587247560  169.65  169.68  169.68  169.65    6.306080

1 Ответ

5 голосов
/ 19 апреля 2020

Ваш индекс должен быть отсортирован в порядке возрастания.

history.sort_index().last('10s')                                                                                                                                                                                                    
#                            time     low    high    open   close     volume
# Index                                                                     
# 2020-04-18 22:14:00  1587248040  170.27  170.32  170.27  170.32  32.788304

Ваш индекс выглядит перевернутым прямо сейчас. Таким образом, без sort_index() последняя строка фактически имеет наименьшее время индекса. Все остальное время являются после , что, в то время как last() ищет, чтобы удалить вещи, которые более чем на 10 секунд до справка времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...