title: Find First Non-zero Value in Each Row of Pandas DataFrame
body: <p>I have a Pandas DataFrame:</p>
  
  <pre><code>import pandas as pd
  
  df = pd.DataFrame([[0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0],
                     [1.0, 0.0, 1.0, 3.0, 1.0, 1.0, 7.0, 0.0],
                     [0.0, 0.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0]
                    ]
                    , columns=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])
  
       A    B     C     D     E     F     G     H
  0  0.0  2.0   3.0   4.0   5.0   6.0   7.0   8.0
  1  1.0  0.0   1.0   3.0   1.0   1.0   7.0   0.0
  2  0.0  0.0  13.0  14.0  15.0  16.0  17.0  18.0
  </code></pre>
  
  <p>And I'd like to return a <b>series</b> (not a list) of the first non-zero value in each row. This currently works but <code>lookup</code> returns a list instead of a series (I know I can convert the list to a series) but I'm assuming there's a better way:</p>
  
  <pre><code>first_nonzero_colnames = (df &gt; 0).idxmax(axis=1, skipna=True)
  df.lookup(first_nonzero_colnames.index, first_nonzero_colnames.values)
  
  [  2.   1.  13.]
  </code></pre>
  
  <p>I can use <code>.apply</code> but I want to avoid it.</p>