input: Write a python function to group a dataframe by a specified column and return the top N averages of another specified column, sorted in descending order.
  assert group_and_top_avg(pd.DataFrame([
      {"customer_id": 1, "month": 1, "amount": 40000},
      {"customer_id": 2, "month": 1, "amount": 10000},
      {"customer_id": 3, "month": 1, "amount": 20000},
      {"customer_id": 1, "month": 2, "amount": 30000},
      {"customer_id": 2, "month": 2, "amount": 15000},
      {"customer_id": 3, "month": 2, "amount": 50000},
  ]), 'customer_id', 'amount', 5).tolist() == [45000.0, 35000.0, 12500.0]
  assert group_and_top_avg(pd.DataFrame([
      {"customer_id": 1, "month": 1, "amount": 5000},
      {"customer_id": 2, "month": 1, "amount": 15000},
      {"customer_id": 3, "month": 1, "amount": 25000},
      {"customer_id": 1, "month": 2, "amount": 3000},
      {"customer_id": 2, "month": 2, "amount": 7000},
      {"customer_id": 3, "month": 2, "amount": 10000},
  ]), 'customer_id', 'amount', 2).tolist() == [17500.0, 12500.0]
output: def group_and_top_avg(df, group_col, avg_col, n):
      grouped = df.groupby(group_col)[avg_col].mean()
      sorted_avg = grouped.sort_values(ascending=False)
      return sorted_avg.head(n)