如何从日期范围中选择数据

时间:2019-08-16 06:22:49

标签: python pandas dataframe slice datetimeindex

我有以下日期时间索引和数据框对象:

dti = pd.DatetimeIndex(['2019-06-02', '2019-06-16', '2019-07-07', '2019-07-21', '2019-08-04'], name='Date')

df = pd.DataFrame(columns=['Open', 'High', 'Low', 'Close'], index=dti,
                  data={
                      'Open': [1.27223, 1.27340, 1.26976, 1.25736, 1.23806],
                      'High': [1.27223, 1.27340, 1.26976, 1.25736, 1.23806],
                      'Low': [1.27223, 1.27340, 1.26976, 1.25736, 1.23806],
                      'Close': [1.27223, 1.27340, 1.26976, 1.25736, 1.23806]
                  })

这是基于每周的数据,每个柱形图都是金融市场上的每周柱形图。 我想为每个df行选择每日酒吧,例如

2019-06-16: [2019-06-10, 2019-06-11, ..., 2019-06-16]
2019-07-07: [2019-07-01, 2019-07-02, ..., 2019-07-07]
...

最后应该是数据帧列表。 存在来自每日柱线的所有数据。

对我来说,问题是如何找到每周酒吧的开始日期,然后可以使用切片,例如[from_date:to_date]

第二个问题是,它不仅可以是每周一次,还可以是其他任何时期:每月,每季度,...

当我订购了一系列连续的日期时,我使用了布尔运算,但是在这里这种方法不起作用:

# get components values range
comp_res = comp[(comp.index > _from) & (comp.index <= _to)]

1 个答案:

答案 0 :(得分:2)

使用pandas.Series.to_period

pd.Series(df.index).dt.to_period('w').dt.start_time

输出:

0   2019-05-27
1   2019-06-10
2   2019-07-01
3   2019-07-15
4   2019-07-29
Name: Date, dtype: datetime64[ns]