Как объединить значения из групп в столбце, чтобы сделать значения другого столбца
Допустим, у меня есть следующее:
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
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
lambda
не нужна, вы можете просто сделатьdf1.groupby('Animal').Meal.transform(' '.join)
какstr.join
- это функция.