Данные Панд исчезают при добавлении пропущенных дат - PullRequest
0 голосов
/ 01 декабря 2019

По какой-то причине все данные панд исчезают, когда я добавляю отсутствующие даты в столбец даты.

start = datetime.datetime(2008,1,1)
end = datetime.datetime.today()
start1 = datetime.datetime(2019,1,1)
data = con.get_candles(ticker, period='D1', start = start, end = end)
data1 = con.get_candles(ticker, period='D1', start = start1, end = end)
data.index = pd.to_datetime(data.index, format ='%Y-%m-%d')
data1.index = pd.to_datetime(data1.index, format ='%Y-%m-%d %h:%m:%s')


print(data)

Вывод:

bidopen bidclose    bidhigh bidlow  askopen askclose    askhigh asklow  tickqty
date                                    
2008-01-02 22:00:00 1.45922 1.47142 1.47493 1.45922 1.45955 1.47145 1.47508 1.45955 13594
2008-01-03 22:00:00 1.47142 1.47494 1.47805 1.46872 1.47145 1.47507 1.47819 1.46885 19098
2008-01-04 22:00:00 1.47494 1.47522 1.48239 1.46950 1.47507 1.47542 1.48256 1.46964 18556
2008-01-07 22:00:00 1.47444 1.46936 1.47544 1.46652 1.47495 1.46957 1.47590 1.46668 17260
2008-01-08 22:00:00 1.46936 1.47061 1.47423 1.46804 1.46957 1.47072 1.47437 1.46818 19053
... ... ... ... ... ... ... ... ... ...
2019-11-25 22:00:00 1.10149 1.10126 1.10316 1.10030 1.10200 1.10151 1.10328 1.10041 116831
2019-11-26 22:00:00 1.10126 1.10197 1.10249 1.10065 1.10151 1.10218 1.10262 1.10076 115033
2019-11-27 22:00:00 1.10197 1.09987 1.10244 1.09917 1.10218 1.10001 1.10256 1.09928 118146
2019-11-28 22:00:00 1.09987 1.10075 1.10174 1.09985 1.10001 1.10112 1.10184 1.10002 80103
2019-11-30 03:00:00 1.10075 1.10148 1.10277 1.09806 1.10112 1.10211 1.10288 1.09817 112825
3446 rows × 9 columns

Когда я добавляю отсутствующие даты:

data = data.set_index(data.index.normalize())    #Added 
data1 = data1.set_index(data.index.normalize())  #Added these lines with suggestion from @abhilb
full_dates = pd.date_range(start, end)
data = data.reindex(full_dates)
data1 = data1.reindex(full_dates)

Я получаю следующую ошибку:

ValueError: Length mismatch: Expected 285 rows, received array of length 3442

1 Ответ

1 голос
/ 01 декабря 2019

Вам необходимо сбросить часть времени объекта datetime на ноль, прежде чем восстанавливать индекс.

>>> data = data.set_index(data.index.normalize())
>>> full_dates = pd.date_range(start, end)
>>> data = data.reindex(full_dates)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...