Python 在Pandas中迭代DateTimeIndex

Python 在Pandas中迭代DateTimeIndex,python,pandas,datetime,Python,Pandas,Datetime,我有一个熊猫数据框,索引是一系列连续的日期。我试图遍历日期,但是我被抛出了一个KeyError,我知道给定的键存在并且格式正确(时间戳) 最后一行的第一次迭代抛出一个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) 第一把钥匙2016-09-02

我有一个熊猫数据框,索引是一系列连续的日期。我试图遍历日期,但是我被抛出了一个KeyError,我知道给定的键存在并且格式正确(时间戳)

最后一行的第一次迭代抛出一个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)
第一把钥匙2016-09-02 00:00:00
fkey是2016-09-02 00:00:00
正在运行2016-09-02 00:00:00
KeyError:时间戳('2016-09-02 00:00:00')
在我看来,我正在输入我知道存在的精确钥匙,但却抛出了一个钥匙错误!我不确定问题出在哪里。非常感谢您的帮助。

tmp[fkey+datetime.timedelta(days=x)]
这部分是查看数据帧的列标题,而不是索引

试一试

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

tmp['Step count'][fkey+datetime.timedelta(天=x)]
#其中“步骤计数”是感兴趣的列名。

您不需要在此处使用循环,您可以在帖子中包含数据帧的示例以及所需的输出数据帧吗?这几乎是正确的!如果
tmp
是一个Pandas系列,我想它会起作用,但实际上它是一个数据帧。因此,实现这一点的方法是tmp['Step count'][fkey+datetime.timedelta(days=x)],其中'Step count'是感兴趣的列名。或者按照您的建议使用loc功能做类似的事情如果您使用上述信息编辑您的答案,我很乐意将其标记为正确,因为您的答案的关键使我找到了这个解决方案!
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)]
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')