分组之后,我想创建一个新列,其中包含时间序列中过去条目的唯一值。你知道吗
尝试使用努尼克变换,但它给出了整个组的唯一值
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')和get number of unique “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
您可以编写一个函数来执行此操作:
此函数仅在
user
上工作:IIUC,使用
groupby
和cumcount
累计计算唯一值。那么,就reindex
我认为这里应该有一点修改拉斐尔的答案,每一组向前填充:
相关问题 更多 >
编程相关推荐