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

此检查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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值