【问题标题】:How to select data from dates range如何从日期范围中选择数据
【发布时间】:2019-12-22 11:47:40
【问题描述】:

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

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)]

【问题讨论】:

  • 不清楚预期的输出是什么。请把预期的输出作为表格或类似的东西。

标签: python pandas dataframe slice datetimeindex


【解决方案1】:

使用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]

【讨论】:

  • 这几乎就是我要找的...谢谢!有没有办法使用“2w”、“3w”等?
猜你喜欢
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多