我想在投注系统中使用Python和Pandas实现一个经典鞅。在
假设这个数据帧是这样定义的
df = pd.DataFrame(np.random.randint(0,2,100)*2-1, columns=['TossResults'])
所以它包含掷骰结果(-1=输1=赢)
我想改变赌注(我每次下注的金额)使用经典鞅。在
初始股份为1。在
如果我失去的股份将是先前股份的2倍(乘数=2)。在
如果我赢了赌注将是赌注首字母
我做了个功能
^{pr2}$但我不知道如何有效地利用熊猫来实现它。 我试过了:
initial_stake = 1
df['Stake'] = None
df['Stake'][0] = initial_stake
df['TossResultsPrevious'] = self.df['TossResults'].shift(1) # shifting-lagging
df['StakePrevious'] = self.df['Stake'].shift(1) # shifting-lagging
但现在,我需要沿着0轴应用这个(多参数)函数。在
我不知道该怎么办!在
我曾经见过pandas.DataFrame.applymap
函数,但它似乎只是一个参数函数。在
也许我错了,使用shift
函数不是一个好主意
一个小小的解释变化是,您需要将一次失败标记为
1
,而将一次胜利标记为0
。在第一步是找到丢失的运行的边缘,(
steps
+edges
)。然后需要计算步骤大小的差异,并将这些值推回到原始数据中。当你得到cumsum
的toss2
时,它给出了你当前的连败时间。你的赌注是2 ** cumsum(toss2)
。在numpy
版本比pandas
版本快,但该系数取决于N
(对于N=100
为~8,对于{熊猫
使用
pandas.Series
:numpy公司
这是纯粹的
^{pr2}$numpy
版本(我的母语是它)。为了让数组排成一行,pandas
为您做了一些精细的工作熊猫产量
numpy输出
(不同于panadas结果的种子)
当你可以使用向量化操作时,Pandas将获得最大的效率胜利,但我认为这个问题需要迭代。使用熊猫的解决方案:
相关问题 更多 >
编程相关推荐