In my code I iterate through dataframes of each year to calculate the number of wins (increase between numbers) and losses (decrease between numbers), and the ratio of wins to losses. The loop I run correctly displays the right number of wins and losses in the dataframe they are eventually pushed to. However, when calculating the win/loss ratio, the if statement isn’t working for no real reason. Here is the loop:
trades = [] wins = [] losses = [] winloss = [] for df in df_years_grouped: total_trades = len(df) trades.append(total_trades) win = 0 loss = 0 for i, row in df.iterrows(): if i == 0: continue elif (df[1][i] > df[1][i-1]): win += 1 elif (df[1][i] < df[1][i-1]): loss += 1 wins.append(win) losses.append(loss) if win == 0 & loss == 0: winloss.append(0) elif win > 0 & loss == 0: winloss.append('All Wins') elif win == 0 & loss > 0: winloss.append('All Losses') else: winloss.append(win/loss)
Here is the outcome in the Dataframe:
Trades Win Lose W/L 11 5 5 All Wins 42 21 20 All Wins 35 16 18 All Wins 14 9 4 All Wins 23 13 9 All Wins 12 7 4 All Wins 4 2 1 All Wins 4 2 1 All Wins 11 5 5 All Wins 6 3 2 All Wins 0 0 0 0 9 6 2 All Wins 2 0 1 0 16 6 9 All Wins 3 0 2 0 14 7 6 All Wins 206 106 99 1.070707
As you can see it works on one or two but fails on the most, making most of them wins?
Advertisement
Answer
I believe you should be using “and” instead of “&” in the if statements. You can read up on the differences here:
https://www.geeksforgeeks.org/difference-between-and-and-in-python/