title: In python, rename variables using parameter of a function
body: <p>I am creating a function. One input of this function will be a panda dataframe and one of its tasks is to do some operation with two variables of this dataframe. These two variables are not fixed and I want to have the freedom to determine them using parameters as inputs of the function fun. </p>
  
  <p>For example, suppose at some moment the variables I want to use are 'var1' and 'var2' (but at another time, I may want to use others two variables). Supose that these variables take values 1,2,3,4 and I want to reduce df doing var1 == 1 and var2 == 1. My functions is like this</p>
  
  <pre><code>def fun(df , var = ['input_var1', 'input_var2'] , val):
      df = df.rename(columns={  var[1] : 'aux_var1 ', var[2]:'aux_var2'})
  
      # Other operations
      df  = df.loc[(df.aux_var1 == val ) &amp; (df.aux_var2 == val )] 
      # end of operations
  
      # recover 
      df = df.rename(columns={ 'aux_var1': var[1] ,'aux_var2': var[2]})
      return df 
  
  </code></pre>
  
  <p>When I use the function fun, I have the error</p>
  
  <pre><code>fun(df, var = ['var1','var2'], val = 1)
  IndexError: list index out of range
  </code></pre>
  
  <p>Actually, I want to do other more complex operations and I didn't describe these operations so as not to extend the question. Perhaps the simple example above has a solution that does not need to rename the variables. But maybe this solution doesn't work with the operations I really want to do. So first, I would necessarily like to correct the error when renaming the variables. If you want to give another more elegant solution that doesn't need renaming, I appreciate that too, but I will be very grateful if besides the elegant solution, you offer me the solution about renaming.</p>