【问题标题】:Python Pandas business day range bdate_range doesn't take 1min freq?Python Pandas 工作日范围 bdate_range 不需要 1 分钟频率?
【发布时间】:2013-10-15 05:16:22
【问题描述】:

我正在尝试使用 bdate_range 和 '1min' 频率来获取所有工作日的每分钟数据。

df = pd.bdate_range('20130101 9:30','20130106 16:00',freq='1min')

输出以

结尾
......
2013-01-05 23:59:00
2013-01-06 00:00:00

In [158]: 

注意 2013-01-05 和 2013-01-06 是周末,9:30 到 16:00 之间没有时间限制

我认为 freq = '1min' 完全覆盖了函数名称 bdate_range 中的 freq = 'B'

我也尝试过使用 date_range。它在 9:30 到 16:00 的时间范围内有效,但不能排除周末。

谢谢!

【问题讨论】:

    标签: python pandas date-range


    【解决方案1】:

    你可以这样做

    In [28]: rng = pd.date_range('2012-01-01', '2013-01-01', freq="1min")
    
    In [29]: rng
    Out[29]: 
    <class 'pandas.tseries.index.DatetimeIndex'>
    [2012-01-01 00:00:00, ..., 2013-01-01 00:00:00]
    Length: 527041, Freq: T, Timezone: None
    

    限制我想要的次数

    In [30]: x = rng[rng.indexer_between_time('9:30','16:00')]
    
    In [31]: x
    Out[31]: 
    <class 'pandas.tseries.index.DatetimeIndex'>
    [2012-01-01 09:30:00, ..., 2012-12-31 16:00:00]
    Length: 143106, Freq: None, Timezone: None
    

    仅限周一至周五

    In [32]: x = x[x.dayofweek<5]
    
    In [33]: x
    Out[33]: 
    <class 'pandas.tseries.index.DatetimeIndex'>
    [2012-01-02 09:30:00, ..., 2012-12-31 16:00:00]
    Length: 102051, Freq: None, Timezone: None
    

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 2018-04-13
      • 2018-12-24
      • 1970-01-01
      • 2015-12-14
      • 2022-08-18
      • 2012-02-11
      • 1970-01-01
      相关资源
      最近更新 更多