标记最后一组项目datafram

2024-06-09 17:52:20 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个销售订单的数据集,这些订单被划分为产品批次。想在熊猫/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

有什么建议吗


Tags: 数据订单idby产品标志asyear
1条回答
网友
1楼 · 发布于 2024-06-09 17:52:20

示例数据集:

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

我们要对“id\u type”列中的最后一个订单应用一个标签。首先,我们将最后一个类型顺序分配给一个索引。为此:

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

然后我们需要生成一个新的布尔列'label'。如果该列未验证条件,则该列将为False,反之则为True。注:将使用int类型以改进计算:

df['label'] = 0
# Assign True conditions to the indexes:
df.loc[indexes,'label'] = 1

相关问题 更多 >