gpt4 book ai didi

python - Pandas 中按组划分的唯一性索引

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

我有一个基本上看起来像的数据框:

A=pd.DataFrame({'Id':[1,1,1,1,2,2,2],'Time'[0,0.5,1.2,1.2,0.2,0.2,0.5]})
idx Id Time
0 1 0.0
1 1 0.5
2 1 1.2
3 1 1.2
4 2 0.2
5 2 0.2
6 2 0.5
7 3 1.7

并且我想为每个 ID 的不同时间值分配一个时间排序索引。所以基本上这些列应该给出这个特定 ID 的时间值的顺序。此外,具有相同 Id 和相同时间的条目应该具有相同的排序索引。然后我应该有:

idx Id  Time Time_order
0 1 0.0 0
1 1 0.5 1
2 1 1.2 2
3 1 1.2 2
4 2 0.2 0
5 2 0.2 0
6 2 0.5 1
7 3 1.7 0

如果没有 for 循环,我怎样才能高效地做到这一点?非常感谢。

最佳答案

groupbyrank 使用 method='dense'

A.assign(Time_order=A.groupby('Id').Time.rank(method='dense') - 1)

idx Id Time Time_order
0 0 1 0.0 0.0
1 1 1 0.5 1.0
2 2 1 1.2 2.0
3 3 1 1.2 2.0
4 4 2 0.2 0.0
5 5 2 0.2 0.0
6 6 2 0.5 1.0
7 7 3 1.7 0.0

astype(int) 如果你真的想要的话

A.assign(Time_order=A.groupby('Id').Time.rank(method='dense').astype(int) - 1)

idx Id Time Time_order
0 0 1 0.0 0
1 1 1 0.5 1
2 2 1 1.2 2
3 3 1 1.2 2
4 4 2 0.2 0
5 5 2 0.2 0
6 6 2 0.5 1
7 7 3 1.7 0

pd.factorize

A.assign(Time_order=A.groupby('Id').Time.transform(lambda x: pd.factorize(x, sort=True)[0]))

idx Id Time Time_order
0 0 1 0.0 0.0
1 1 1 0.5 1.0
2 2 1 1.2 2.0
3 3 1 1.2 2.0
4 4 2 0.2 0.0
5 5 2 0.2 0.0
6 6 2 0.5 1.0
7 7 3 1.7 0.0

关于python - Pandas 中按组划分的唯一性索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226569/

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