Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to concatenate multiple column values into a single column in Pandas dataframe

This question is same to this posted earlier. I want to concatenate three columns instead of concatenating two columns:

Here is the combining two columns:

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 

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

df['combined']=df.apply(lambda x:'%s_%s' % (x['bar'],x['foo'],x['new']),axis=1) 
like image 849
NamAshena Avatar asked Sep 02 '16 11:09

NamAshena


People also ask

How do I concatenate multiple columns in pandas?

By use + operator simply you can concatenate two or multiple text/string columns in pandas DataFrame. Note that when you apply + operator on numeric columns it actually does addition instead of concatenation.

How do I combine column values in pandas?

To start, you may use this template to concatenate your column values (for strings only): df['New Column Name'] = df['1st Column Name'] + df['2nd Column Name'] + ... Notice that the plus symbol ('+') is used to perform the concatenation.


2 Answers

Another solution using DataFrame.apply(), with slightly less typing and more scalable when you want to join more columns:

cols = ['foo', 'bar', 'new'] df['combined'] = df[cols].apply(lambda row: '_'.join(row.values.astype(str)), axis=1) 
like image 91
Allen Avatar answered Sep 22 '22 01:09

Allen


you can simply do:

In[17]:df['combined']=df['bar'].astype(str)+'_'+df['foo']+'_'+df['new']  In[17]:df Out[18]:     bar foo     new    combined 0    1   a   apple   1_a_apple 1    2   b  banana  2_b_banana 2    3   c    pear    3_c_pear 
like image 29
shivsn Avatar answered Sep 22 '22 01:09

shivsn