code: def rsi(arg, n):
      
      if isinstance(arg, pd.DataFrame):
          cols = [(name, rsi(arg[name], n)) for name in arg.columns]
          return pd.DataFrame.from_items(cols)
      else:
          assert isinstance(arg, pd.Series)
          n = int(n)
          converted = arg.dropna()
          change = converted.diff()
          gain = change.apply(lambda c: c > 0 and c or 0)
          avgGain = wilderma(gain, n)
          loss = change.apply(lambda c: c < 0 and abs(c) or 0)
          avgLoss = wilderma(loss, n)
  
          result = avgGain / avgLoss
          result[result == np.inf] = 100.  # divide by zero
          result = 100. - (100. / (1. + result))
          return pd.Series(result, index=converted.index).reindex(arg.index)
docs: compute RSI for the given arg
  
      arg: Series or DataFrame