Solución:
Puede agrupar por el 'name'
y 'month'
columnas, luego llame transform
que devolverá datos alineados con el df original y aplicará una lambda donde join
las entradas de texto:
In [119]:
df['text'] = df[['name','text','month']].groupby(['name','month'])['text'].transform(lambda x: ','.join(x))
df[['name','text','month']].drop_duplicates()
Out[119]:
name text month
0 name1 hej,du 11
2 name1 aj,oj 12
4 name2 fin,katt 11
6 name2 mycket,lite 12
Subo el df original pasando una lista de las columnas de interés df[['name','text','month']]
aquí y luego llamar drop_duplicates
EDITAR en realidad solo puedo llamar apply
y luego reset_index
:
In [124]:
df.groupby(['name','month'])['text'].apply(lambda x: ','.join(x)).reset_index()
Out[124]:
name month text
0 name1 11 hej,du
1 name1 12 aj,oj
2 name2 11 fin,katt
3 name2 12 mycket,lite
actualizar
los lambda
es innecesario aquí:
In[38]:
df.groupby(['name','month'])['text'].apply(','.join).reset_index()
Out[38]:
name month text
0 name1 11 du
1 name1 12 aj,oj
2 name2 11 fin,katt
3 name2 12 mycket,lite
podemos agrupar por las columnas “nombre” y “mes”, luego llame a las funciones agg () de los objetos DataFrame de Panda.
La funcionalidad de agregación proporcionada por la función agg () permite calcular múltiples estadísticas por grupo en un cálculo.
df.groupby(['name', 'month'], as_index = False).agg({'text': ' '.join})
La respuesta de EdChum le brinda mucha flexibilidad, pero si solo desea concatenar cadenas en una columna de objetos de lista, también puede:
output_series = df.groupby(['name','month'])['text'].apply(list)