Вы можете использовать groupby
с agg
и парой функций str.join
. Части, где вам требуется особый уход:
- Для
C_id
, поскольку для str.join
требуются строки, которые необходимо преобразовать из int
в str
.
- Для
C_Name
у вас есть ряд списков. itertools.chain
- эффективный способ свести эти списки в итерацию без вложенности.
Вот рабочий пример:
from itertools import chain
agg_funcs = {'C_id': lambda x: ','.join(map(str, x)),
'C_Name': lambda x: ','.join(chain.from_iterable(x))}
res = df.groupby(['S_Name', 'Phone']).agg(agg_funcs).reset_index()
print(res)
S_Name Phone C_id C_Name
0 Banti 90406459 117 Earring
1 F Fashion 9040645 61,61,73 Kurti,Kurti,Cotton Kurti
2 Shree Collection 77422222 97,97,105,95 Bedsheet,Bedsheet,Jeans,Lehenga