You are looking for
aggregation_functions = {'price': 'sum', 'amount': 'sum', 'name': 'first'}
df_new = df.groupby(df['id']).aggregate(aggregation_functions)
which gives
price name amount
id
1 130 anna 3
2 42 bob 30
3 3 charlie 110