获取熊猫日期时间索引的先前值

新手上路,请多包涵

我有一个带有日期时间索引的熊猫数据框

Date
2013-02-22 00:00:00+00:00    0.280001
2013-02-25 00:00:00+00:00    0.109999
2013-02-26 00:00:00+00:00   -0.150000
2013-02-27 00:00:00+00:00    0.130001
2013-02-28 00:00:00+00:00    0.139999
Name: MOM12

并想要评估给定日期时间索引的前三个值。

 date = "2013-02-27 00:00:00+00:00"
df.ix[date]

我搜索了这个但是因为我的索引是一个日期我不能做

df.ix[int-1]

原文由 trbck 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 410
2 个回答

这是一种方法,首先通过 get_loc 获取索引键的整数位置:

 In [15]: t = pd.Timestamp("2013-02-27 00:00:00+00:00")

In [16]: df1.index.get_loc(t)
Out[16]: 3

然后您可以使用 iloc (获取整数位置,或按整数位置切片):

 In [17]: loc = df1.index.get_loc(t)

In [18]: df.iloc[loc - 1]
Out[18]:
Date    2013-02-26 00:00:00
                      -0.15
Name: 2, Dtype: object

In [19]: df1.iloc[slice(max(0, loc-3), min(loc, len(df)))]
        # the min and max feel slightly hacky (!) but needed incase it's within top or bottom 3
Out[19]:
Date
2013-02-22  0.280001
2013-02-25  0.109999
2013-02-26 -0.150000

请参阅 文档的索引部分


我不太确定你是如何设置你的 DataFrame 的,但对我来说这不像是日期时间索引。 这是我如何获得数据帧(带有时间戳索引):

 In [11]: df = pd.read_clipboard(sep='\s\s+', header=None, parse_dates=[0], names=['Date', None])

In [12]: df
Out[12]:
                 Date
0 2013-02-22 00:00:00  0.280001
1 2013-02-25 00:00:00  0.109999
2 2013-02-26 00:00:00 -0.150000
3 2013-02-27 00:00:00  0.130001
4 2013-02-28 00:00:00  0.139999

In [13]: df1 = df.set_index('Date')

In [14]: df1
Out[14]:
Date
2013-02-22  0.280001
2013-02-25  0.109999
2013-02-26 -0.150000
2013-02-27  0.130001
2013-02-28  0.139999

原文由 Andy Hayden 发布,翻译遵循 CC BY-SA 3.0 许可协议

你能做 df.shift().loc[date] 吗?

原文由 dionysos137 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题