Pandas concatenan valores de diferentes filas

Dado este dataframe:

import pandas as pd a=pd.DataFrame({'number':[2,2,3],'A':['abc','def','ghi']}) a A number 0 abc 2 1 def 2 2 ghi 3 

Necesito concatenar valores, en orden de índice, de filas con el mismo valor numérico, separados por ‘; ‘.

Resultado deseado:

  A number 0 abc; def 2; 2 2 ghi 3 

Hasta ahora, pensé que podría aislar los marcos de datos y luego tratar de unirlos de esta manera:

 a['rank']=a.groupby('number').rank() a1=a.loc[a['rank']==1] a2=a.loc[a['rank']==2] b=a1.merge(a2,on='number',how='left') b=b.fillna('') b A_x number rank_x A_y rank_y 0 abc 2 1.0 def 2 1 ghi 3 1.0 

..y entonces es solo una cuestión de esto por columna:

 b['A'] = b['A_x']+'; '+b['A_y'] 

… pero ¿hay una manera más concisa de hacer esto (quizás para todas las columnas a la vez)?

¡Gracias por adelantado!

Use groupby + agg

 a.astype(str).groupby(a.number, as_index=False).agg('; '.join) A number 0 abc; def 2; 2 1 ghi 3 

Gracias a MaxU por la puesta a punto!

Necesitas un nuevo para para ayudar, luego groupby + agg + join

 a.assign(number2=a.number).groupby('number2').agg(lambda x : ';'.join(x.astype(str))) Out[238]: A number number2 2 abc;def 2;2 3 ghi 3