РЕДАКТИРОВАТЬ : проблема ниже, учитывая метод df.assign(Flag=1 - df.duplicated(['id', 'quarter', 'lot'], keep='last'))
, предложенный ниже
index mkid ordernumber quarter lotnumber1 order_xldate Flag
441670 10176228 0108595504 2015Q2 12947-1 2015-04-09 0
441211 10176228 0108663905 2015Q2 12947-1 2015-04-29 1
450008 10176228 0108663905 2015Q2 129161 2015-04-29 1
440268 10176228 0108779992 2015Q2 12987-1 2015-05-29 0
448187 10176228 0108779992 2015Q2 12848-1 2015-05-29 1
439085 10176228 0108895691 2015Q2 12987-1 2015-06-29 1
446123 10176228 0108895691 2015Q2 12965-1 2015-06-29 1
419419 10176228 0109003405 2015Q3 12969-1 2015-07-27 1
429893 10176228 0109003405 2015Q3 12987-1 2015-07-27 1
426850 10176228 0109241988 2015Q3 13929 2015-09-15 1
384762 10176228 0109385611 2015Q4 K10127 2015-10-09 1
Поле Flag
применяется к каждому ordernumber
в данном квартале, не последний ordernumber
. Таким образом, выше, для 2015Q2
, Flag
должен попадать только для обеих строк ordernumber 0108895691
ПРЕДВАРИТЕЛЬНЫЙ ПОСТ :
В настоящее время у меня есть набор данных заказов на продажу, в котором каждый ordernumber
делится на лоты (т. Е. lot1
, lot2
и т. Д.). Таким образом, для каждого ordernumber
может быть несколько строк. Другими соответствующими столбцами являются счета id
и quarter
(т.е. 2018Q2). Для каждого данного id
в каждом данном quarter
я хочу применить флаг к всем лотам последнего ордера в данном квартале с использованием Pandas / Python. Любой совет?
В настоящее время есть:
masterDF['FLAG'] = masterDF.groupby(by=['id','quarter'],as_index=False)['ordernumber'].nth(-1)
masterDF['LAST_ORDER_OF_QUARTER'] = np.where(masterDF['FLAG'].isnull(),0,1)
Но это ставит 1 только на последнюю строку этой комбинации id / четверти / порядка, а не на все строки в данном заданном порядке, если этот номер заказа появляется более чем на один ряд.
Мой желаемый результат - иметь 1 на обоих лотах orderB
id | quarter | ordernumber | lot | Last Order of Quarter
----------------------------------------------------------------------------
A | 2018Q1 | orderA | lot1 | 0
A | 2018Q1 | orderB | lot1 | 1
A | 2018Q1 | orderB | lot2 | 1
Вместо:
id | quarter | ordernumber | lot | Last Order of Quarter
----------------------------------------------------------------------------
A | 2018Q1 | orderA | lot1 | 0
A | 2018Q1 | orderB | lot1 | 0
A | 2018Q1 | orderB | lot2 | 1
Любой совет?