python - Comparing values in columns and returning boolean values -


hi have 4 columns column names(ma5,ma10,ma20,ma60). see if in each row, satisfies: ma60>ma20>ma10>ma5(numbers in these columns in specific row), return 1 if true , 0 if false. tried following:

(eachstockdf['ma5']>eachstockdf['ma10'] ,  eachstockdf['ma10']>eachstockdf['ma20'] ,  eachstockdf['ma20']>eachstockdf['ma60']) *1 

i want return series 0 , 1 indication of whether condition met. gives following error:

valueerror: truth value of series ambiguous. use a.empty, a.bool(),  a.item(), a.any() or a.all(). 

i know works when compare 2 rows. example:

((eachstockdf['ma5']>eachstockdf['ma10'])) *1 

but how can compare 4 columns? in advance!!

you need use bitwise & operators, pandas overloads those.

also, each condition must wrapped in set of enclosing parens, because of precedence of bitwise operators.

( (eachstockdf['ma5']  > eachstockdf['ma10']) &    (eachstockdf['ma10'] > eachstockdf['ma20']) &    (eachstockdf['ma20'] > eachstockdf['ma60'])  ) * 1 

as note, convert bool int

(....).astype(int) 

Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -