Как объединить значения из групп в столбце в Python

1

Как объединить значения из групп в столбце, чтобы сделать значения другого столбца

Допустим, у меня есть следующее:

df1 = pd.DataFrame({'Animal': ['Dog','Dog', 'Cat','Cat','Dog'],
                    'Date':   ['01/08/18','01/09/18','01/12/18','02/23/18','01/15/18'],
                    'Meal':   ['DogFood','Bone','Mouse','CatFood','Treat']}
)

  Animal      Date     Meal
0    Dog  01/08/18  DogFood
1    Dog  01/09/18     Bone
2    Cat  01/12/18    Mouse
3    Cat  02/23/18  CatFood
4    Dog  01/15/18    Treat

Можно ли использовать панды для группировки Animal, Order by date, а затем объединить значения столбца Meal, чтобы создать новый столбец, который выглядит следующим образом:

  Animal      Date     Meal               Order
0    Cat  01/12/18    Mouse       Mouse CatFood
1    Cat  02/23/18  CatFood       Mouse CatFood
2    Dog  01/08/18  DogFood  DogFood Bone Treat
3    Dog  01/09/18     Bone  DogFood Bone Treat
4    Dog  01/15/18    Treat  DogFood Bone Treat
Теги:
pandas
concatenation

1 ответ

4
df2 = df1.sort_values(['Animal', 'Date'])
df2['Order']=df1.groupby('Animal').Meal.transform(lambda x : ' '.join(x))

Выход:

  Animal      Date     Meal               Order
2    Cat  01/12/18    Mouse       Mouse CatFood
3    Cat  02/23/18  CatFood       Mouse CatFood
0    Dog  01/08/18  DogFood  DogFood Bone Treat
1    Dog  01/09/18     Bone  DogFood Bone Treat
4    Dog  01/15/18    Treat  DogFood Bone Treat
  • 1
    lambda не нужна, вы можете просто сделать df1.groupby('Animal').Meal.transform(' '.join) как str.join - это функция.
  • 0
    @ ты бы хотел принять это? галочка слева

Ещё вопросы

Сообщество Overcoder
Наверх
Меню