df_ = df[['ID', 'Value']].dropna().set_index('Value', append=True).ID.unstack()
df.drop('Value', 1).merge(df_, right_index=True, left_index=True, how='left'
    ).fillna('')
Транспонировать строки в столбцы, сохраняя при этом часть фрейма данных