YouAssuming the column names being ['person', 'activity'] you can do
df_out = df.groupby(0'person').agg(list).reset_index() df_out[[1, 2]]df_out = pd.concat([df_out, pd.DataFrame(df_out[1]df_out['activity'].values.tolist())], axis=1) df_out = df_out.drop('activity', 1) giving you
0person 10 21 0 Andrew running cars 1 John guitar dancing 2 Michael football None