Отметить последний набор элементов данных - PullRequest
0 голосов
/ 31 августа 2018

Иметь набор данных заказов на продажу, разделенных на партии товаров. Хотите применить флаг к всем лотам последнего ордера в течение данного года в Pandas / Python. Любой совет?

В настоящее время есть:

masterDF['FLAG'] = masterDF.groupby(by=['id','year'],as_index=False)['ordernumber'].nth(-1)
masterDF['LAST_ORDER_OF_QUARTER'] = np.where(masterDF['FLAG'].isnull(),0,1)

Но это только ставит 1 в последнюю строку кадра данных, а не все строк в данном заданном порядке, если этот ordernumber появляется в более чем одной строке.

Для иллюстрации:

ordernumber   |   lot      |    Last Order of Quarter
------------------------------------------------------
orderA        |   lot1     |     0
orderB        |   lot1     |     1
orderB        |   lot2     |     1

Любой совет?

1 Ответ

0 голосов
/ 02 сентября 2018

пример набора данных:

event_id,type,timestamp
asd12e,click,12322232
asj123,click,212312312
asd321,touch,12312323
asdas3,click,33332233
sdsaa3,touch,33211333

Мы хотим применить метку к последним заказам из столбца 'id_type'. Во-первых, мы присваиваем последний тип заказа к индексу. Для этого:

indexes = df.drop_duplicates(subset='type',keep='last').index

Затем нам нужно сгенерировать новый логический столбец 'label'. Этот столбец будет ложным в случае, если он не проверяет условие, и истинным в противоположном случае. Примечание: тип int будет использоваться для улучшения вычислений:

df['label'] = 0
# Assign True conditions to the indexes:
df.loc[indexes,'label'] = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...