title: how to do left join using pandas
body: <p>i have 2 data frame, it looks like this:
  DF1:</p>
  
  <pre><code>Product, Region, ProductScore
  AAA, R1,100
  AAA, R2,100
  BBB, R2,200
  BBB, R3,200
  </code></pre>
  
  <p>DF2:</p>
  
  <pre><code>Region, RegionScore
  R1,1
  R2,2
  </code></pre>
  
  <p>How can I let these 2 join into 1 dataframe, the result shall be like this:</p>
  
  <pre><code>Product, Region, ProductScore, RegionScore
  AAA, R1,100,1
  AAA, R2,100,2
  BBB, R2,200,2
  </code></pre>
  
  <p>Thanks a lot!</p>
  
  <p>Edit1:</p>
  
  <p>I used the df.merge(df_new)
  Got this error msg:</p>
  
  <pre><code>  File "C:\Python34\lib\site-packages\pandas\core\frame.py", line 4071, in merge
      suffixes=suffixes, copy=copy)
    File "C:\Python34\lib\site-packages\pandas\tools\merge.py", line 37, in merge
      copy=copy)
    File "C:\Python34\lib\site-packages\pandas\tools\merge.py", line 183, in __init__
      self.join_names) = self._get_merge_keys()
    File "C:\Python34\lib\site-packages\pandas\tools\merge.py", line 318, in _get_merge_keys
      self._validate_specification()
    File "C:\Python34\lib\site-packages\pandas\tools\merge.py", line 409, in _validate_specification
      if not self.right.columns.is_unique:
  AttributeError: 'list' object has no attribute 'is_unique'
  </code></pre>
  
  <p>EDIT2:
  I realize my df_new is a data series (created by using groupby) instead of data frame. now I have converted it to a data frame, here is the info:
  
  print(df.info())
      Int64Index: 1111 entries, 0 to 1110
      Data columns (total 8 columns):
      product              1111 non-null object
      reviewuserId         1111 non-null object
      reviewprofileName    1111 non-null object
      reviewelpfulness     881 non-null float64
      reviewscore          1111 non-null float64
      reviewtime           1111 non-null int64
      reviewsummary        1111 non-null object
      reviewtext           1111 non-null object
      dtypes: float64(2), int64(1), object(5)
      memory usage: 56.4+ KB
      None</p>
  
  <pre><code>print(df_new_2.info())
  
  &lt;class 'pandas.core.frame.DataFrame'&gt;
  Index: 1089 entries, A100Y8WSLFJN7Q to AZWBQPQN96SS6
  Data columns (total 1 columns):
  reviewelpfulnessbyuserid    864 non-null float64
  dtypes: float64(1)
  memory usage: 12.8+ KB
  None
  </code></pre>
  
  <hr>
  
  <pre><code>print(df.head())
  
        product    reviewuserId                         reviewprofileName  \
  0  B003AI2VGA  A141HP4LYPWMSR          Brian E. Erland "Rainbow Sphinx"   
  1  B003AI2VGA  A328S9RN3U5M68                                Grady Harp   
  2  B003AI2VGA  A1I7QGUDP043DG                 Chrissy K. McVay "Writer"   
  3  B003AI2VGA  A1M5405JH9THP9                              golgotha.gov   
  4  B003AI2VGA   ATXL536YX71TR  KerrLines "&amp;#34;MoviesMusicTheatre&amp;#34;"   
  
     reviewelpfulness  reviewscore  reviewtime  \
  0               1.0            3  1182729600   
  1               1.0            3  1181952000   
  2               0.8            5  1164844800   
  3               1.0            3  1197158400   
  4               1.0            3  1188345600   
  
                                         reviewsummary  \
  0  There Is So Much Darkness Now ~ Come For The M...   
  1  Worthwhile and Important Story Hampered by Poo...   
  2                      This movie needed to be made.   
  3                  distantly based on a real tragedy   
  4  What's going on down in Juarez and shining a l...   
  
                                            reviewtext  
  0  Synopsis: On the daily trek from Juarez Mexico...  
  1  THE VIRGIN OF JUAREZ is based on true events s...  
  2  The scenes in this film can be very disquietin...  
  3  THE VIRGIN OF JUAREZ (2006)&lt;br /&gt;directed by K...  
  4  Informationally this SHOWTIME original is esse...  
  </code></pre>
  
  <hr>
  
  <pre><code>print(df_new_2.head())
  
                  reviewelpfulnessbyuserid
  reviewuserId                            
  A100Y8WSLFJN7Q                       NaN
  A103VZ3KDF2RT5                  0.555556
  A1041HQGJDKFG5                  0.000000
  A10FBJXMQPI0LL                  0.333333
  A10LIHFA4SSK3F                  0.000000
  </code></pre>
  
  <p>Now the error msg looks like this:</p>
  
  <pre><code>  File "pandas\hashtable.pyx", line 694, in pandas.hashtable.PyObjectHashTable.get_item (pandas\hashtable.c:12245)
  KeyError: 'reviewuserId'
  </code></pre>
  
  <p>After print these information, i fixed the problem by simply add:
  <code>df_new_2 = df_new.to_frame().reset_index()</code></p>