Итерация по DateTimeIndex в Пандах - PullRequest
0 голосов
/ 25 октября 2018

У меня есть DataFrame Pandas с индексом, который представляет собой серию последовательных дат.Я пытаюсь перебрать даты, но мне выдается ошибка KeyError, где я знаю, что данный ключ существует и находится в правильном формате (Pandas Timestamp)

import pandas as pd
import datetime

## Importing the data from the Sep 2016-August 2018
## Step count & Date features only

features = ['Date','Step count']
data = pd.read_csv('fit_daily_sum_Sep2016_Aug2018.csv', sep=',', usecols=features).set_index('Date')
# To convert data index to datetime
data.index = pd.to_datetime(data.index)

tmp = data.head()
print tmp.index
print 'first key',tmp.index[0]
print type(tmp.index[0])

fkey = pd.Timestamp(2016,9,2)
print 'fkey is',fkey
for x in xrange(0, len(tmp)):
    print 'running',fkey+datetime.timedelta(days=x)
    print tmp[fkey+datetime.timedelta(days=x)]

Первая итерация последней строкивыдает KeyError.Консоль показывает, как показано ниже (сжато)

DatetimeIndex(['2016-09-02', '2016-09-03', '2016-09-04', '2016-09-05',
           '2016-09-06'],
          dtype='datetime64[ns]', name=u'Date', freq=None)
first key 2016-09-02 00:00:00
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
fkey is 2016-09-02 00:00:00
running 2016-09-02 00:00:00
KeyError: Timestamp('2016-09-02 00:00:00')

Мне кажется, что я передаю точный ключ, который, как я знаю, существует, но все же выдает ошибку KeyError!Я не уверен, где проблема.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 25 октября 2018
tmp[fkey+datetime.timedelta(days=x)]

Эта часть просматривает заголовок столбца вашего dataFrame, а не индекс.

Попробуйте

tmp.loc(fkey+datetime.timedelta(days=x))

или

`tmp['Step count'][fkey+datetime.timedelta(days=x)]
#where 'Step count' is the column name of interest.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...