Pandas groupby where all columns are added to a list prefixed by column name,df.groupby('id1').apply(func)