Сгруппируйте по и назначьте его промежуточным группам в python pandas

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных pandas в приведенном ниже формате. Для каждой группы в col1 я пытаюсь вычислить среднее значение ‘price’ и назначить его той же группе, но для года ‘2015’ (в результирующем фрейме данных ниже). Этот результат должен быть добавлен к исходному фрейму данных.

Я пробовал это, но не уверен, как назначить промежуточные результаты, создав для этого отдельную строку.

 df_make_year.apply(lambda x: x.groupby('Col1')['price'].mean())


col1    year    price

XXX     2016    4633.028506
XXX     2017    4805.72567
YYY     2016    4919.385966
YYY     2017    4959.816429
YYY     2018    4987.046863
  

Результат (добавлен к приведенному выше фрейму данных):

 XXX 2015    4719
YYY 2015    4955
  

Ответ №1:

Вы можете сделать append после groupby assign

 df = df.append(df.groupby('col1').agg({'col1':'first', 'price':'mean'}).assign(year=2015).reset_index(drop=True),sort=True)