Используйте, если важен порядок GroupBy.agg
с функцией лямбды и удалите дубликаты dictionary
:
df1=df.groupby('ID').agg(lambda x: ','.join(dict.fromkeys(x.astype(str)).keys())).reset_index()
#another alternative, but slow if large data
#df = df.groupby('ID').agg(lambda x: ','.join(x.astype(str).unique())).reset_index()
print (df1)
ID Name City Email \
0 1 Ted,Josh Chicago,Richmond abc@gmail.com
1 2 John,Mike Seattle,Berkley 123@gmail.com,4723@gmail.com
Phone Country
0 132321,435324 USA
1 322421 USA
Если порядок не важен, используйте аналогичное решение с удаленными дубликатами set
с:
df2 = df.groupby('ID').agg(lambda x: ','.join(set(x.astype(str)))).reset_index()
print (df2)
ID Name City Email \
0 1 Josh,Ted Richmond,Chicago abc@gmail.com
1 2 John,Mike Berkley,Seattle 4723@gmail.com,123@gmail.com
Phone Country
0 435324,132321 USA
1 322421 USA