Преобразовать столбец nozzle
в строки, drop_duplicates
и использовать GroupBy.apply
с join
:
df['nozzle'] = df['nozzle'].astype(str)
df1 = df.drop_duplicates().groupby('tank')['nozzle'].apply(','.join).reset_index()
print (df1)
tank nozzle
0 1 1,2,3
1 2 2,1,3
Альтернативное решение с лямбда-функцией:
df1 = (df.drop_duplicates()
.groupby('tank')['nozzle']
.apply(lambda x: ','.join(x.astype(str)))
.reset_index())
Для списков:
df1 = df.drop_duplicates().groupby('tank')['nozzle'].apply(list).reset_index()
print (df)
tank nozzle
0 1 [1, 2, 3]
1 2 [2, 1, 3]