title: How to fix AttributeError: 'DataFrame' object has no attribute 'assign' with out updating Pandas?
body: <p>I am trying merge multiple files based on a key ('r_id') and rename the column names in the output with the name of the files. I could able to do every thing except renaming the output with  the file names. I have the following error probably caused by the old version of Pandas. Does any one know how to fix this with out updating pandas to new version?</p>
  
  <p>Error</p>
  
  <pre><code>    Traceback (most recent call last):                                       
        File "multijoin_2.py", line 19, in &lt;module&gt;                            
          result = merge_files(files).reset_index()                            
        File "multijoin_2.py", line 11, in merge_files                         
          pd.read_csv(f, sep='\t', usecols=['r_id', 'exp'])          
        File "/users/xxx/anaconda/lib/python2.7/site-packages/pandas/core/frame.py", line 2007, in __getattr__
          (type(self).__name__, name))                                                                             
  AttributeError: 'DataFrame' object has no attribute 'assign'  
  </code></pre>
  
  <p>Input</p>
  
  <p>$ cat test1</p>
  
  <pre><code>r_id       g_id exp
  r1      g1      20
  r2      g1      30
  r3      g1      1
  r4      g1      3
  </code></pre>
  
  <p>$ cat test2</p>
  
  <pre><code>r_id       gid exp
  r1      g2      20
  r2      g2      30
  r3      g2      1
  r4      g2      3
  </code></pre>
  
  <p>$ cat test3</p>
  
  <pre><code>r_id       g_id exp
  r1      g3      30
  r2      g3      40
  r3      g3      11
  r4      g3      32
  </code></pre>
  
  <p>Desired Ouput</p>
  
  <pre><code>  r_id  test3  test2  test1
  0        r1        30        20        20
  1        r2        40        30        30
  2        r3        11         1         1
  3        r4        32         3         3
  </code></pre>
  
  <p>Working code (except column naming) </p>
  
  <pre><code>import os
  import glob
  import pandas as pd
  
  files = glob.glob(r'/path/test*')
  
  def merge_files(files, **kwargs):
      dfs = []
      for f in files:
          dfs.append(
              pd.read_csv(f, sep='\t', usecols=['r_id', 'exp'])
                #.assign(col=0)
                .rename(columns={'col_name':os.path.splitext(os.path.basename(f))[0]})
                .set_index(['repeat_id'])
          )
      return pd.concat(dfs, axis=1)
  
  
  result = merge_files(files).reset_index()
  print(result)
  </code></pre>