Вы можете использовать groupby
df = pd.DataFrame({'col1': ['a','a','b','b'], 'col2': [[1,2,3], [3,4,5],[1,2,3,4,20], [3,80,4,5]]})
print(df.groupby('col1').sum())
Вывод:
col2
col1
a [1, 2, 3, 3, 4, 5]
b [1, 2, 3, 4, 20, 3, 80, 4, 5]
Если требуется рассмотреть повторяющееся значение только один раз, тогда оно можетсделать следующим образом:
1) Используя Set ()
print(df.groupby('col1').sum()['col2'].apply(lambda x: list(set(x))).reset_index())
Вывод:
col1 col2
0 a [1, 2, 3, 4, 5]
1 b [1, 2, 3, 4, 5, 80, 20]
2) Используяdict.fromkeys (): Это поможет сохранить порядок элементов в списке:
print(df.groupby('col1').sum()['col2'].apply(lambda x: list(dict.fromkeys(x))).reset_index())
Вывод:
col1 col2
0 a [1, 2, 3, 4, 5]
1 b [1, 2, 3, 4, 20, 80, 5]