比较基于其他行的当前行

时间:2016-05-30 02:53:25

标签: python pandas

例如,我有一个df

ID  Name   Value
0   A      10
1   A      11
3   A      15
4   B       7
5   B      11
C   X       1

我想找到,对于当前行,计算有多少其他行具有相同的名称和更大的值。 预期产出;

ID  Name   Value  Res
0   A      10       2
1   A      11       1
3   A      15       0
4   B       7       1
5   B      11       0
6   X       1       0

编辑:附加案例。仅包含在tag = 1

的count中
ID  Name   Value   Tag Res
0   A       9       1    2
1   A      10       0    2
2   A      11       1    1
3   A      15       1    0
4   B       7       1    1
5   B      11       1    0
6   X       1       1    0

1 个答案:

答案 0 :(得分:3)

经过一些调整后,您可以将Series.rankmethod='dense'

一起使用
>>> grouped = df.groupby("Name")["Value"]
>>> df["Res"] = grouped.rank(method="dense", ascending=False).astype(int) - 1
>>> df
  ID Name  Value  Res
0  0    A     10    2
1  1    A     11    1
2  3    A     15    0
3  4    B      7    1
4  5    B     11    0
5  C    X      1    0