title: pandas apply with inputs from multiple rows
body: <p>I need to do an apply on a dataframe using inputs from multiple rows. As a simple example, I can do the following if all the inputs are from a single row:</p>
  
  <pre><code>df['c'] = df[['a','b']].apply(lambda x: awesome stuff, axis=1) 
  # or 
  df['d'] = df[['b','c']].shift(1).apply(...) # to get the values from the previous row
  </code></pre>
  
  <p>However, if I need 'a' from the current row, and 'b' from the previous row, is there a way to do that with apply? I could add a new 'bshift' column and then just use df[['a','bshift']] but it seems there must be a more direct way.</p>
  
  <p>Related but separate, when accessing a specific value in the df, is there a way to combine labeled indexing with integer-offset? E.g. I know the label of the current row but need the row before. Something like <code>df.at['labelIknow'-1, 'a']</code> (which of course doesn't work). This is for when I'm forced to iterate through rows. Thanks in advance.</p>
  
  <p><strong>Edit:</strong> Some info on what I'm doing etc. I have a pandas store containing tables of OHLC bars (one table per security). When doing backtesting, currently I pull the full date range I need for a security into memory, and then resample it into a frequency that makes sense for the test at hand. Then I do some vectorized operations for things like trade entry signals etc. Finally I loop over the data from start to finish doing the actual backtest, e.g. checking for trade entry exit, drawdown etc - this looping part is the part I'm trying to speed up.</p>