Вы можете группировать столбцы 'name'
и 'month'
, а затем вызывать transform
, которые возвращают данные, выровненные по исходному df, и применяют лямбда, где мы join
текстовые записи:
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
Я подставляю оригинальный df, передавая здесь список интересующих столбцов df[['name','text','month']]
, а затем вызываю drop_duplicates
EDIT, на самом деле я могу просто вызвать apply
, а затем 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
update
здесь не требуется lambda
:
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