gpt4 book ai didi

python - 如何在组内逐条查找唯一值?

转载 作者:行者123 更新时间:2023-12-01 00:36:26 25 4
gpt4 key购买 nike

分组后,我想创建一个新列,其中包含时间序列中过去条目的唯一值。

尝试使用nunique变换,但它给出了整个组的唯一值

data={'user':['a','a','b','a','b','a','a','b'],
'time':[1,1.1,1.2,1.2,1.3,1.3,1.3,1.3],'prod': ['k','k','t','t','y','k','z','x']}
df=pd.DataFrame(data)
df
user time prod
0 a 1.0 k
1 a 1.1 k
2 b 1.2 t
3 a 1.2 t
4 b 1.3 y
5 a 1.3 k
6 a 1.4 z
7 b 1.4 x

现在我想要的是 gropby('user',sort='time') 并获取唯一的数量“prod”列中逐项的值。

预期输出:

user time    prod  uniq_ebe
0 a 1.0 k 1
1 a 1.1 k 1
2 b 1.2 t 1
3 a 1.2 t 2
4 b 1.3 y 2
5 a 1.3 k 2
6 a 1.4 z 3
7 b 1.4 x 3

按用户排序(输出):

   user time    prod  unique_ebe
0 a 1.0 k 1
1 a 1.1 k 1
2 a 1.2 t 2
3 a 1.3 k 2
4 a 1.4 z 3
5 b 1.2 t 1
6 b 1.3 y 2
7 b 1.4 x 3

最佳答案

我认为这里应该稍微修改拉斐尔的答案,并按组向前填充:

df['uniq_ebe'] = (df.drop_duplicates(['user', 'prod'])
.groupby('user')['prod']
.cumcount()
.add(1)
.reindex(df.index)
.groupby(df['user'])
.ffill()
.astype(int))
print (df)
user time prod uniq_ebe
0 a 1.0 k 1
1 a 1.1 k 1
2 b 1.2 t 1
3 a 1.2 t 2
4 b 1.3 y 2
5 a 1.3 k 2
6 a 1.3 z 3
7 b 1.3 x 3

关于python - 如何在组内逐条查找唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57719999/

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