此检查next_day不在mcal.get_calendar('NYSE')中。valid_days(start_date='2000-12-20', end_date='2020-01-10')非常耗时,因为它需要从7000天的数组中查找。你需要对每一个操作都这样做,所以我认为这是效率低下的主要原因。 您可以通过转换mcal.get_calendar('NYSE')来加快这种检查。valid_days(start_date='2000-12-20', end_date='2020-01-10')设置,将查找从O(N)降低到O(log N)。 但我会选择另一种策略: 编辑:允许任意数量的滞后和领先

import pandas as pd

import pandas_market_calendars as mcal

def get_next_trading_day(df1, n):

trading_days = pd.DataFrame({"date": mcal.get_calendar('NYSE').valid_days(start_date='2016-11-10', end_date='2016-12-01')})

trading_days['date'] = trading_days['date'].dt.tz_convert(None)

trading_days = trading_days[~trading_days.date.dt.weekday.isin([5,6])]

trading_days['next_trading_day'] = trading_days.date.shift(-n)

# extract unique date from df1

df2 = pd.DataFrame({"date": pd.unique(df1['date'])})

# merge with the trading days data (non-trading day will have NA fields)

df2 = df2.merge(trading_days, on='date', how='outer')

# impute NA values

df2.sort_values(by='date', inplace=True)

df2['next_trading_day'].fillna(method= 'ffill' if n>0 else 'bfill', inplace=True)

return df1.merge(df2, on='date', how='left')

dict1 = [

{'date': '2016-11-27'},

{'date': '2016-11-28'},

{'date': '2016-11-27'},

]

df1= pd.DataFrame(dict1)

df1['date'] = pd.to_datetime(df1['date'])

print("Next trading day")

print(get_next_trading_day(df1, 1))

print()

print("Previous trading day")

print(get_next_trading_day(df1, -1))

print()

print("Next next trading day")

print(get_next_trading_day(df1, 2))

print()

print("Previous previous trading day")

print(get_next_trading_day(df1, -2))

print()

输出

Next trading day

date next_trading_day

0 2016-11-27 2016-11-28

1 2016-11-28 2016-11-29

2 2016-11-27 2016-11-28

Previous trading day

date next_trading_day

0 2016-11-27 2016-11-25

1 2016-11-28 2016-11-25

2 2016-11-27 2016-11-25

Next next trading day

date next_trading_day

0 2016-11-27 2016-11-29

1 2016-11-28 2016-11-30

2 2016-11-27 2016-11-29

Previous previous trading day

date next_trading_day

0 2016-11-27 2016-11-23

1 2016-11-28 2016-11-23

2 2016-11-27 2016-11-23

mysql的分类有哪些_MYSQL查询所有的分类,以及每个分类下面所有的文章?相关推荐

  1. mysql怎么查找列命令_MySQL查询命令-DQL

    MySQL查询命令-DQL EMP //员工表 员工编号 员工名 岗位 领导 入职日期 工资 奖金 部门编号 +-------+--------+-----------+------+-------- ...

  2. mysql连续打卡次数_MySQL查询连续打卡信息?

    导读:最近多次看到用SQL查询连续打卡信息问题,自己也实践一波.抛开问题本身,也是对MySQL窗口函数和自定义变量用法的一种练习. 00 建表 所用数据库为MySQL8.0,简单而不失一般性,建立一个 ...

  3. mysql dump 到的文件_mysql查询结果导出到文件

    方法一: 直接执行命令: mysql> select count(1) from table into outfile '/tmp/test.xls'; Query OK, 31 rows af ...

  4. mysql选出重复的字段_mysql查询表里的重复数据方法:

    INSERT INTO hk_test(username, passwd) VALUES ('qmf1', 'qmf1'),('qmf2', 'qmf11') delete from hk_test  ...

  5. mysql for 语句执行顺序_MySQL查询语句的执行流程

    MySQL可以抽象分为 Server 和存储引擎. Server 包括 连接器,分析器,优化器,执行器等. 存储引擎负责数据的存储和具体查询.存储引擎是可插拔式的,支持 InnoDB,MyISAM 等 ...

  6. mysql是否有缓存区_Mysql查询高速缓存区

    为了提高查询速度,Mysql会维护一个内存区域(官方文档指出,大小至少41984B)对查询结果进行缓存,当查询时发现缓存区里有数据则直接返回结果而不用去执行sql语句. 查询命中的条件 每个缓存查询至 ...

  7. mysql 按照in id顺序_Mysql查询结果顺序按in()中ID的顺序排列的案例区分

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  8. mysql 下一条数据_mysql 查询一条记录的下一条和上一条记录

    如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): select * from tab ...

  9. mysql可以存储标点么_MySQL查询(进阶)(每个标点都是重点)

    MySQL 是工作中很普遍的需要用到的,所以必须掌握,而 之前我们一直说的都是怎么存. 你只会存不会取有个屁用.所以希望大家在如何查询读取数据这方面多下点功夫. 这篇和上一篇都是干货,我也是第一次学. ...

最新文章

  1. python npy文件_python实现npy格式文件转换为txt文件操作
  2. 域客户端的计算机更名
  3. 控制是否展示_非线性控制(四)描述函数法
  4. 在shell中如何判断一个变量是否为空
  5. 特色租房管理系统/租房管理系统/房屋租赁管理系统
  6. OA项目之我的审批(查询会议签字)
  7. 中国省市县地区代码数据库文件
  8. 精英二代手柄测试软件,XBOX精英二代手柄评测视频:世界上最先进的手柄
  9. Linux下 TP(触摸屏)驱动的框架分析
  10. 2019最新activiti6.0工作流搭建平台
  11. 现代互联网的TCP拥塞控制(CC)算法评谈
  12. VUE博客模板----FXBLOG
  13. Android平台和java平台DES加密解密互通程序及其不能互通的原因(转)
  14. Linux: sd 0:0:1:0: timing out command, waited 1080s, 访问磁盘错误
  15. 今后,若你的公众号还按老方式发广告,罚款高的可达百万。有公众号已经被惩处了。
  16. 百度自然语言接口调用
  17. 3000亿美元的东南亚数码经济为企业创造增长机会,也带来更大的欺诈风险 | 美通社头条...
  18. linux压缩文件和命令
  19. Oracle数据库的dblink连接
  20. c语言13 6,C语言学习笔记13

热门文章

  1. 缓存淘汰算法--LRU算法
  2. 如何让.Net线程支持超时后并自动销毁!
  3. opj1837 Balance(dp)
  4. 杭电 1272 并查集判断环
  5. [病毒]exp1orer.exe
  6. html css拖拽设计,css绘制三角形 和 HTML拖拽事件
  7. Ubuntu之查看依赖软件
  8. 查看audio信息工具(十九)
  9. Mac otool替代readelf命令
  10. Typora MarkDown语法笔记(一)