首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何生成一个频率为Tue到Sat的熊猫日期范围?

如何生成一个频率为Tue到Sat的熊猫日期范围?
EN

Stack Overflow用户
提问于 2020-08-27 17:58:24
回答 2查看 1.1K关注 0票数 4

我正在尝试用熊猫生成一个日期时间索引,该索引具有自定义的每日频率。

目前,我可以生成以下日期时间索引:

代码语言:javascript
运行
复制
import pandas as pd
import datetime as dt

pd.date_range(start=dt.datetime(2020,8,28),end=dt.datetime(2020,9,30),freq='B')

DatetimeIndex(['2020-08-28', '2020-08-31', '2020-09-01', '2020-09-02',
               '2020-09-03', '2020-09-04', '2020-09-07', '2020-09-08',
               '2020-09-09', '2020-09-10', '2020-09-11', '2020-09-14',
               '2020-09-15', '2020-09-16', '2020-09-17', '2020-09-18',
               '2020-09-21', '2020-09-22', '2020-09-23', '2020-09-24',
               '2020-09-25', '2020-09-28', '2020-09-29', '2020-09-30'],
              dtype='datetime64[ns]', freq='B')

但是,这将返回所有工作日。我想把所有的Tue,Wed,Thur,Fri和星期六都还给你。也许这可以通过某种定制设置或某种偏移来完成?具体来说,是否有一种直接使用date_range功能和freq输入的方法?如果没有,如何才能最简单地做到这一点呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-27 18:03:41

您可以使用Timedelta添加一天,但是为了不更改所需的日期范围,您需要在创建边界时删除一天。

代码语言:javascript
运行
复制
(pd.date_range(start=dt.datetime(2020,8,27),end=dt.datetime(2020,9,29),freq='B') 
  + pd.Timedelta(days=1))

DatetimeIndex(['2020-08-28', '2020-08-29', '2020-09-01', '2020-09-02',
               '2020-09-03', '2020-09-04', '2020-09-05', '2020-09-08',
               '2020-09-09', '2020-09-10', '2020-09-11', '2020-09-12',
               '2020-09-15', '2020-09-16', '2020-09-17', '2020-09-18',
               '2020-09-19', '2020-09-22', '2020-09-23', '2020-09-24',
               '2020-09-25', '2020-09-26', '2020-09-29', '2020-09-30'],
              dtype='datetime64[ns]', freq=None)

编辑:您还可以定义CustomBusinessDay

代码语言:javascript
运行
复制
cbd = pd.tseries.offsets.CustomBusinessDay(weekmask='Tue Wed Thu Fri Sat')
pd.date_range(start=dt.datetime(2020,8,28),end=dt.datetime(2020,9,30),freq=cbd)
票数 4
EN

Stack Overflow用户

发布于 2020-08-27 18:05:17

dayofweek

代码语言:javascript
运行
复制
idx = pd.date_range(start=dt.datetime(2020,8,28),end=dt.datetime(2020,9,30))
s = idx.dayofweek
idx[s.isin([2,3,4,5])]

代码语言:javascript
运行
复制
DatetimeIndex(['2020-08-28', '2020-08-29', '2020-09-02', '2020-09-03',
           '2020-09-04', '2020-09-05', '2020-09-09', '2020-09-10',
           '2020-09-11', '2020-09-12', '2020-09-16', '2020-09-17',
           '2020-09-18', '2020-09-19', '2020-09-23', '2020-09-24',
           '2020-09-25', '2020-09-26', '2020-09-30'],
          dtype='datetime64[ns]', freq=None)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63621747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档