How to concatenate multiple column values into a single column in Panda dataframe
<p>This question is same to <a href="http://stackoverflow.com/questions/11858472/pandas-combine-string-and-int-columns">this posted</a> earlier. I want to concatenate three columns instead of concatenating two columns:</p>

<p>Here is the combining two columns:</p>

<pre><code>df = DataFrame({'foo':['a','b','c'], 'bar':[1, 2, 3], 'new':['apple', 'banana', 'pear']})

df['combined']=df.apply(lambda x:'%s_%s' % (x['foo'],x['bar']),axis=1)

df
    bar foo new combined
0   1   a   apple   a_1
1   2   b   banana  b_2
2   3   c   pear    c_3
</code></pre>

<p>I want to combine three columns with this command but it is not working, any idea?</p>

<pre><code>df['combined']=df.apply(lambda x:'%s_%s' % (x['bar'],x['foo'],x['new']),axis=1)
</code></pre>

<p>Just wanted to make a time comparison for both solutions (for 30K rows DF):</p>

<pre><code>In [1]: df = DataFrame({'foo':['a','b','c'], 'bar':[1, 2, 3], 'new':['apple', 'banana', 'pear']})

In [2]: big = pd.concat([df] * 10**4, ignore_index=True)

In [3]: big.shape
Out[3]: (30000, 3)

In [4]: %timeit big.apply(lambda x:'%s_%s_%s' % (x['bar'],x['foo'],x['new']),axis=1)
1 loop, best of 3: 881 ms per loop

In [5]: %timeit big['bar'].astype(str)+'_'+big['foo']+'_'+big['new']
10 loops, best of 3: 44.2 ms per loop
</code></pre>

<p>a few more options:</p>

<pre><code>In [6]: %timeit big.ix[:, :-1].astype(str).add('_').sum(axis=1).str.cat(big.new)
10 loops, best of 3: 72.2 ms per loop

In [11]: %timeit big.astype(str).add('_').sum(axis=1).str[:-1]
10 loops, best of 3: 82.3 ms per loop
</code></pre>

python pandas dataframe