Reading from yahoo finance download ohlcv for nvidia, I am creating a column for signal buy/dontbuy, when I try to define which passes the avg>volume test everything either comes out all 'buy' or don't buy.
df=pd.read_csv('NVDA.csv',dtype={'label':str})
df['Price%delta']=((df['Close']/df['Open'])*100)
df['Avg_volume']=df['Volume'].rolling(7).mean()
df['Signal']=0
for index, row in df.iterrows():
if row['Volume'] > row['Avg_volume']:
df['Signal']='Buy'
else:
df['Signal']='Dont Buy'
You don't really need the for loop at all:
mask = df["Volume"] > df["Avg_volume"]
df.loc[mask, "Signal"] = "Buy"
df.loc[~mask, "Signal"] = 'Don't buy'