import pandas as pd df1 = pd.DataFrame({'Column1': [1,2,3,4,5], 'Column2': ['a','b','c','d','e'], 'Column3': ['r','u','k','j','f']}) df2 = pd.DataFrame({'Column1': [1,1,1,2,2,3,3], 'ColumnB': ['a','d','e','r','w','y','h']}) iter = -1 dfs = pd.DataFrame({}) for name, group in df2.groupby('Column1'): buffer_df = pd.DataFrame({'Column1': group['Column1'][:1]}) i = 0 for iindex, value in range(len(group['ColumnB']).iteritems(): iteri += 1 string = 'Column_' + str(i) buffer_df[string] = group['ColumnB'][iter]value dfs = dfs.append(buffer_df) result = pd.merge(df1, dfs, how='left', on='Column1') print(result)