df = pd.DataFrame(np.random.choice(('a', 'b', 'c'), (5, 4)), list('ABCDE'),
    ['Col1', 'Col2', 'Col3', 'Col2'])
pd.concat([pd.DataFrame(c) for i, c in df.items()], axis=1, keys=list(range(
    len(df.columns)))).swaplevel(0, 1, 1).sort_index(1).groupby(level=0, axis=1
    ).apply(lambda df: df.apply(lambda x: ','.join(x.values), axis=1))
Кадр данных Pandas объединяет повторяющиеся столбцы в отдельные данные запятой