gpt4 book ai didi

Python 返回组中的第一次出现

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:39 26 4
gpt4 key购买 nike

我一直在寻找一种方法来找到基于组的一系列行中的第一次出现。

首先,我检查并为每个组应用了一个“组”计数器。然后我想将状态下第一个“已售出”的 ID 作为新列返回,并将其应用于整个组。

示例如下。 Final_ID 是要创建的新列。

group  ID   status  Final_ID
1 100 view 103
1 101 show 103
1 102 offer 103
1 103 sold 103
1 104 view 103
2 105 view 106
2 106 sold 106
2 107 sold 106
3 108 pending 109
3 109 sold 109
3 110 view 109
4 111 sold 111
4 112 sold 111
4 113 sold 111
4 114 sold 111

我试过用

df = pd.DataFrame ({'group':['1','1','1','1','1','2','2','2','3','3','3','4','4','4','4'], 
'ID':['100','101','102','103','104','105','106','107','108','109','110','111','112','113','114'],
'status':['view','show','offer','sold','view','view','sold','sold','pending','sold','view','sold','sold','sold','sold']
})


df2=df[( df.status=='sold')][['group','ID']].groupby('group'['ID'].apply(min).reset_index()

df2=df.merge(df2, on='group' , how='left')

但我不确定这是解决问题的正确方法。还有其他想法吗?

最佳答案

状态出售的地方屏蔽您的ID系列,然后将您的组分组并转换 first,它为每个组选择第一个非 NaN 值,在本例中是 sold

的第一次出现
df['ID'].mask(df['status'] != 'sold').groupby(df['group']).transform('first').astype(int)

0     103
1 103
2 103
3 103
4 103
5 106
6 106
7 106
8 109
9 109
10 109
11 111
12 111
13 111
14 111
Name: Final_ID, dtype: int32

关于Python 返回组中的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57482571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com