相关疑难解决方法(0)

用熊猫创建交易假期日历

我正在尝试使用Pandas创建交易日历.我能够基于USFederalHolidayCalendar创建一个cal实例.USFederalHolidayCalendar与交易日历不一致,因为交易日历不包括哥伦布日和退伍军人日.但是,交易日历包括耶稣受难日(不包括在USFederalHolidayCalendar中).以下代码中除最后一行之外的所有内容都有效:

from pandas.tseries.holiday import get_calendar, HolidayCalendarFactory, GoodFriday
from datetime import datetime

cal = get_calendar('USFederalHolidayCalendar')  # Create calendar instance
cal.rules.pop(7)                                # Remove Veteran's Day rule
cal.rules.pop(6)                                # Remove Columbus Day rule
tradingCal = HolidayCalendarFactory('TradingCalendar', cal, GoodFriday)
Run Code Online (Sandbox Code Playgroud)

tradeCal实例似乎可以工作,因为我可以查看Holiday规则.

In[10]: tradingCal.rules
Out[10]: 
[Holiday: Labor Day (month=9, day=1, offset=<DateOffset: kwds={'weekday': MO(+1)}>),
 Holiday: Presidents Day (month=2, day=1, offset=<DateOffset: kwds={'weekday': MO(+3)}>),
 Holiday: Good Friday (month=1, day=1, offset=[<Easter>, <-2 * Days>]),
 Holiday: Dr. Martin Luther King Jr. (month=1, day=1, offset=<DateOffset: kwds={'weekday': MO(+3)}>),
 Holiday: New Years Day (month=1, …
Run Code Online (Sandbox Code Playgroud)

python calendar pandas

26
推荐指数
3
解决办法
2万
查看次数

在给定日期添加n个工作日,忽略python中的假日和周末

我正在尝试将n(整数)工作日添加到给定日期,添加日期必须避免假期和周末(它不包括在工作日内)

python datetime

18
推荐指数
5
解决办法
2万
查看次数

具有不同偏移量向量的 Pandas 向量化日期偏移量操作

我正在尝试执行以下操作,但似乎不支持此模式下的矢量化操作。

import pandas as pd
df=pd.DataFrame([[2017,1,15,1],
             [2017,1,15,2],
             [2017,1,15,3],
             [2017,1,15,4],
             [2017,1,15,5],
             [2017,1,15,6],
             [2017,1,15,7]],
             columns=['year','month','day','month_offset'])
df['date']=df.apply(lambda g: pd.datetime(g.year,g.month,g.day),axis=1)
df['offset']=df.apply(lambda g: pd.offsets.MonthEnd(g.month_offset),axis=1)
df['date_offset']=df.date+df.offset
Run Code Online (Sandbox Code Playgroud)

这是代码片段中最后一条语句返回的警告:

C:\Python3.5.2.3\WinPython-64bit-3.5.2.3\python-3.5.2.amd64\lib\site-packages\pandas\core\ops.py:533: PerformanceWarning: 添加/减去 DateOffsets 数组到系列未矢量化“系列未矢量化”,性能警告)

由于性能优势,我希望将其用作矢量化操作。

谢谢。

编辑

最后,比较@john-zwinck 的方法:

import time
import pandas as pd
import numpy as np

df=pd.DataFrame([[2017,1,1,1],
             [2017,1,1,2],
             [2017,1,1,3],
             [2017,1,1,4],
             [2017,1,1,5],
             [2017,1,1,6],
             [2017,1,1,7]],
             columns=['year','month','day','month_offset'])

df['mydate']=df.apply(lambda g: 
pd.datetime(g.year,g.month,g.day),axis=1)
start_time=time.time()
df['pandas_offset']=df.apply(lambda g: g.mydate + 
pd.offsets.MonthEnd(g.month_offset),axis=1)
end_time=time.time()
print('Method1 {} seconds'.format(end_time-start_time))

start_time=time.time()
df['numpy_offset']=(df.mydate.values.astype('M8[M]')+ 
df.month_offset.values * np.timedelta64(1, 'M')).astype('M8[D]') - 
np.timedelta64(1, 'D')
end_time=time.time()
print('Method3 with numpy vectorization {} seconds'.format(end_time-
start_time))
Run Code Online (Sandbox Code Playgroud)

结果: …

python pandas

10
推荐指数
1
解决办法
6065
查看次数

标签 统计

python ×3

pandas ×2

calendar ×1

datetime ×1