Нарезка непоследовательных дат в временных сериях в пандах - PullRequest
0 голосов
/ 28 августа 2018

Я хочу вырезать непоследовательные даты во временных сериях Pandas. Я могу извлечь одну дату, и я могу сделать то же самое для последовательных дат, но когда я пытаюсь извлечь непоследовательные даты, у меня не получается. Я даю ниже для целей воспроизводимости набор игрушечных данных и мой код.

toy_data.to_json()
'{"MMM":{"1459382400000":7335000000.0,"1467244800000":7493333333.3333330154,"1475193600000":7677666666.6666669846,"1483142400000":7582333333.3333330154,"1490918400000":7447666666.6666669846,"1498780800000":7726666666.6666669846,"1506729600000":7930666666.6666669846,"1514678400000":8111333333.3333330154,"1522454400000":7990000000.0,"1530316800000":7990000000.0},"AOS":{"1459382400000":638566666.6666666269,"1467244800000":646933333.3333333731,"1475193600000":672633333.3333333731,"1483142400000":688633333.3333333731,"1490918400000":712066666.6666666269,"1498780800000":739400000.0,"1506729600000":742100000.0,"1514678400000":756133333.3333333731,"1522454400000":768600000.0,"1530316800000":768600000.0}}'

toy_data.loc['2018-06-30']
Company
MMM    7.990000e+09
AOS    7.686000e+08
Name: 2018-06-30 00:00:00, dtype: float64

toy_data.loc[['2018-06-30', '2017-06-30']]
KeyError: "None of [['2018-06-30', '2017-06-30']] are in the [index]"

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы пытаетесь запросить ваш фрейм данных, используя локаторы типа str. Обратите внимание, что ваш индекс имеет тип dtype datetime64:

toy_data.index.dtype

Урожайность:

datetime64[ns]

Вам нужно преобразовать как str:

toy_data.index = toy_data.index.astype(str)

Затем вы можете запросить, используя тип str:

toy_data.loc[['2017-06-30', '2018-06-30']]

Что дает:

                     MMM          AOS
2017-06-30  7.726667e+09  739400000.0
2018-06-30  7.990000e+09  768600000.0
0 голосов
/ 28 августа 2018

Поскольку ваш index является форматом даты и времени, он не будет выполнен, попробуйте преобразовать в str

df.index=df.index.astype(str)
df.loc[['2018-06-30', '2017-06-30']]
Out[193]: 
                    AOS           MMM
2018-06-30  768600000.0  7.990000e+09
2017-06-30  739400000.0  7.726667e+09
...