text: Q:
  
  Create Column with ELIF in Pandas
  
  Question
  I am having trouble figuring out how to create new DataFrame column based on the values in two other columns.  I need to use if/elif/else logic.  But all of the documentation and examples I have found only show if/else logic.  Here is a sample of what I am trying to do:  
  Code
  df['combo'] = 'mobile' if (df['mobile'] == 'mobile') elif (df['tablet'] =='tablet') 'tablet' else 'other')
  
  I am open to using where() also.  Just having trouble finding the right syntax.  
  
  A:
  
  I tried the following and the result was much faster. Hope it's helpful for others. 
  df['combo'] = 'other'
  df.loc[df['mobile'] == 'mobile', 'combo'] = 'mobile'
  df.loc[df['tablet'] == 'tablet', 'combo'] = 'tablet'
  
  A:
  
  In cases where you have multiple branching statements it's best to create a function that accepts a row and then apply it along the axis=1. This is usually much faster then iteration through rows.
  def func(row):
      if row['mobile'] == 'mobile':
          return 'mobile'
      elif row['tablet'] =='tablet':
          return 'tablet' 
      else:
          return 'other'
  
  df['combo'] = df.apply(func, axis=1)
  
  A:
  
  ELIF logic can be implemented with np.select or nested np.where: 
  import numpy as np
  
  df['combo'] = np.select([df.mobile == 'mobile', df.tablet == 'tablet'], 
                          ['mobile', 'tablet'], 
                          default='other')
  # or 
  df['combo'] = np.where(df.mobile == 'mobile', 'mobile', 
                         np.where(df.tablet == 'tablet', 'tablet', 'other'))
  
  Sample Data + Output:
     mobile  tablet   combo
  0  mobile     bar  mobile
  1     foo  tablet  tablet
  2     foo     nan   other
  3  mobile  tablet  mobile
  4  mobile     nan  mobile
  5     foo  tablet  tablet
  6  mobile     bar  mobile
  7  mobile  tablet  mobile
  8  mobile     bar  mobile
  9  mobile     nan  mobile
  
  