Вы можете попробовать это в две строки.во-первых, нам нужно превратить столбец Value
в строки, чтобы мы могли выполнять операции объединения и операции, а во-вторых, все операции для возврата желаемого результата:
import pandas as pd
import numpy as np
df = pd.DataFrame(data={'ProductName':['Product1','Product2','Product1','Product3','Product3','Product1','Product2'],'Value':[2,3,1,4,5,5,9],'otherValue':[5,2,5,7,7,5,2]})
df['Value'] = df['Value'].astype(str)
df = df.merge(df.groupby('ProductName',as_index=True)['Value'].apply(' '.join).reset_index(),how='left',left_on='ProductName',right_on='ProductName').drop('Value_x',axis=1).drop_duplicates().rename(columns={'Value_y':'Value'})
print (df) Вывод:
ProductName otherValue Value
0 Product1 5 2 1 5
1 Product2 2 3 9
3 Product3 7 4 5