什么是更好的替代方案np.哪里()基于多准则向pandas数据帧添加数据时的函数

2024-09-25 16:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

概述
我正在构建一个功能来测试我的投资策略的盈利能力。策略很简单,如果股票当天收盘下跌,我会在第二天把它押上去,如果它当天收盘,我会在第二天下注。这基本上是一种逆向策略。在

方法
我正在使用np.哪里(numpy)决定天气的功能这是一个成功或失败的交易。如果这只股票今天收盘下跌,第二天又上涨,那就是“赢”,如果下跌就是“亏损”。如果今天涨明天跌“赢”今天涨第二天涨“亏”

编码

df = pd.DataFrame({'Day':['Mon','Tues','Wed','Thurs','Fri','Mon','Tues','Wed','Thurs','Fri','Mon','Tues','Wed','Thurs','Fri'],
                   'DaysGainOrLoss':[0.02,-0.05,0.01,0.02,-0.01,-0.03,0.03,-0.01,0.01,0.03,-0.03,-0.05,-0.01,0.03,0.02]})

df['NextDaysGainOrLoss'] = df['DaysGainOrLoss'].shift(-1)
df['WinOrLoss'] = np.where(df.NextDaysGainOrLoss > 0,np.where(df.DaysGainOrLoss <=0, "Win","Loss"),np.where(df.DaysGainOrLoss > 0,"Win","Loss"))

print(df)  

输出

^{pr2}$

问题
这段代码适用于二进制结果,不管是赢还是输。如果我增加一个更复杂的标准,也就是说,现在我只想在交易日gainorloss为>;=0.05或<;=-.05的情况下进行交易。现在不是输赢,我现在不需要在不符合标准的时候出现。这个np.哪里对二进制结果没问题,但现在这个问题变得复杂了。我知道必须有更好的方法来处理这件事,但我不确定是什么。在

期望

      Day  DaysGainOrLoss  NextDaysGainOrLoss WinOrLoss
0     Mon            0.02               -0.05   NoTrade
1    Tues           -0.05                0.01   Win
2     Wed            0.01                0.02   NoTrade
3   Thurs            0.02               -0.01   NoTrade
4     Fri           -0.01               -0.03   NoTrade
5     Mon           -0.03                0.03   NoTrade
6    Tues            0.03               -0.01   NoTrade
7     Wed           -0.01                0.01   NoTrade
8   Thurs            0.01                0.03   NoTrade
9     Fri            0.03               -0.03   NoTrade
10    Mon           -0.03               -0.05   NoTrade
11   Tues           -0.05               -0.01   Loss
12    Wed           -0.01                0.03   NoTrade
13  Thurs            0.03                0.02   NoTrade
14    Fri            0.02                 NaN   NoTrade

Tags: dfnpwhere策略winmonlosswed