小编vlm*_*ado的帖子

用熊猫创建交易假期日历

我正在尝试使用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万
查看次数

Pycharm - 在使用IPython的python控制台时等待REPL响应

当控制台配置为使用IPython时,PyCharm Python控制台中的响应时间无法忍受.在之前的安装中并非如此.当Python控制台未配置为使用IPython并使用IDLE时,它会正常执行.

响应时间差似乎与REPL响应功能有关,如下图所示.REPL响应对话框完成后,后台进程将继续运行几分钟.

由于这在以前的安装中不是问题,因此问题必须是配置更改的结果.然而,我唯一改变的是使用Conda env而不是virtualenv.

有任何想法吗?

Python控制台

pycharm python-3.x

11
推荐指数
2
解决办法
7070
查看次数

从一个函数在Pandas Dataframe中创建多个列

我是一个蟒蛇新手,所以我希望我的两个问题清晰完整.我在下面以csv格式发布了实际代码和测试数据集.

我已经能够使用Newton-Raphson方法构造以下代码(主要是在StackOverflow贡献者的帮助下)来计算期权合约的隐含波动率.该过程在确定隐含波动率时计算Vega.虽然我可以使用Pandas DataFrame apply方法为Implied Volatility创建一个新的DataFrame列,但我无法为Vega创建第二列.当函数将IV和Vega一起返回时,有没有办法创建两个单独的DataFrame列?

我试过了:

  • return iv, vega 从功能
  • df[['myIV', 'Vega']] = df.apply(newtonRap, axis=1)
  • 拿到 ValueError: Shape of passed values is (56, 2), indices imply (56, 13)

还尝试过:

  • return iv, vega 从功能
  • df['myIV'], df['Vega'] = df.apply(newtonRap, axis=1)
  • 拿到 ValueError: Shape of passed values is (56, 2), indices imply (56, 13)

另外,计算过程很慢.我导入了numba并实现了@jit(nogil = True)装饰器,但我只看到了25%的性能提升.测试数据集的性能测试有近900,000条记录.运行时间为2小时9分钟,没有numba或numba,但没有nogil = True.使用numba和@jit(nogil = True)的运行时间是1小时32分钟.我可以做得更好吗?

from datetime import datetime
from math import sqrt, pi, log, exp, isnan
from scipy.stats import norm
from numba import jit


# dff …
Run Code Online (Sandbox Code Playgroud)

python jit multiple-columns pandas numba

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

Python max()函数在pandas列上使用时失败,整数失败

我正在尝试通过从另一个列中减去现有的dataframe列列来创建新的pandas dataframe列.但是,如果结果为负数,则新列值应设置为零.

import pandas as pd
data = {'A': [1,2,3], 'B': [3,2,1]}
df = pd.DataFrame(data)

In [4]: df
Out[4]: 
   A  B
0  1  3
1  2  2
2  3  1
Run Code Online (Sandbox Code Playgroud)

如果我通过从'A'中减去'B'来创建一个新的数据帧列'C',我会得到正确的结果.

df['C'] = df['A'] - df['B']

In[8]: df
Out[7]: 
   A  B  C
0  1  3 -2
1  2  2  0
2  3  1  2
Run Code Online (Sandbox Code Playgroud)

但是,如果我利用max()函数来避免带负数的结果,我会得到"ValueError:系列的真值是模棱两可的".

>>> df['C'] = max(df['A'] - df['B'], 0)
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). …
Run Code Online (Sandbox Code Playgroud)

python max dataframe pandas

3
推荐指数
1
解决办法
2469
查看次数