Сумма сводного значения по условию python

#python #pandas #sum #pivot #grouping

Вопрос:

У меня есть фрейм данных pandas, такой:

 Id a b c d  x 1 1 1 01/01/2021 x 1 1 0 01/05/2021 y 1 1 1 02/01/2021 y 1 1 1 02/01/2021  Id a b c d  x 2 1 1 01/01/2021 y 1 1 1 02/01/2021  

Я хочу суммировать значения для столбцов a b и c для одного и того же идентификатора, если и только если дата в столбце d отличается. На самом деле, в этом случае в 2 случаях x имеет разные даты, поэтому я могу суммировать значения, вместо этого d имеет одинаковые значения, поэтому я просто беру не сумму, а первое вхождение.

Ответ №1:

 dat[~dat[["d", "Id"]].duplicated()].groupby("Id", as_index=False).agg(  {nm: "first" if nm in ["d", "Id"] else "sum" for nm in dat.columns} )  Id a b c d 0 x 2 2 1 01/01/2021 1 y 1 1 1 02/01/2021