2

我有一个数据框,其中索引由日期时间组成。我也有一个锚定日期,我知道我只希望第二个数据框包含锚定日期之前的 1000 天。做这个的最好方式是什么?

4

1 回答 1

3

不知道这是否是最好的方法,但它应该工作

创建示例数据框:

>>> dates = [pd.datetime(2012, 5, 4), pd.datetime(2012, 5, 5), pd.datetime(2012, 5, 6), pd.datetime(2012, 5, 1), pd.datetime(2012, 5, 2), pd.datetime(2012, 5, 3)]
>>> values = [1, 2, 3, 4, 5, 6]
>>> df = pd.DataFrame(values, dates)
>>> df
>>> df
            0
2012-05-04  1
2012-05-05  2
2012-05-06  3
2012-05-01  4
2012-05-02  5
2012-05-03  6

假设我们想要从 2012-05-04 回溯 2 天:

>>> date_end = pd.datetime(2012, 5, 4)
>>> date_start = date_end - pd.DateOffset(days=2)
>>> date_start, date_end
(datetime.datetime(2012, 5, 2, 0, 0), datetime.datetime(2012, 5, 4, 0, 0))

现在让我们尝试通过标签索引获取行:

>>> df.loc[date_start:date_end]
Empty DataFrame
Columns: [0]
Index: []

那是因为我们的索引没有排序,所以让我们修复它:

>>> df.sort_index(inplace=True)
>>> df.loc[date_start:date_end]
            0
2012-05-02  5
2012-05-03  6
2012-05-04  1

也可以通过日期时间索引获取行:

>>> df[date_start:date_end]
            0
2012-05-02  5
2012-05-03  6
2012-05-04  1

请记住,我仍然不是 Pandas 的专家,但我非常喜欢它用于数据分析。

希望能帮助到你。

于 2013-10-26T11:38:51.877 回答