Python 如何按列分组,并将重复值设为1,将原始值设为0

Python 如何按列分组,并将重复值设为1,将原始值设为0,python,dataframe,date,group-by,rank,Python,Dataframe,Date,Group By,Rank,我有一个数据框:- Date bikes 0 28/12/2021 zw12 1 28/12/2021 zw11 2 28/12/2021 zw13 3 28/12/2021 zw14 4 26/12/2021 zw11 5 25/12/2021 zw11 6 23/12/2021 zw12 7 20/12/2021 zw12 8 19/12/2021 zw11 9 22/05/2020 zw11 10 24/05/

我有一个数据框:-

         Date bikes
0   28/12/2021  zw12
1   28/12/2021  zw11
2   28/12/2021  zw13
3   28/12/2021  zw14
4   26/12/2021  zw11
5   25/12/2021  zw11
6   23/12/2021  zw12
7   20/12/2021  zw12
8   19/12/2021  zw11
9   22/05/2020  zw11
10  24/05/2020  zw12
现在,我想按“bikes”列分组,并从“date”列中选择最新的日期。为此,我创建了一个列“Rank”,它将最新记录指定为1,将旧记录/重复记录指定为2。我试着这样做,如下所示:-

df_rank=df.assign(rank=df.groupby('bikes')['Date'].transform(lambda x: x.rank())) \
  .sort_values('Date',ascending = False)
print(df_rank)
          Date bikes  rank
0   28/12/2021  zw12   4.0
1   28/12/2021  zw11   5.0
2   28/12/2021  zw13   1.0
3   28/12/2021  zw14   1.0
4   26/12/2021  zw11   4.0
5   25/12/2021  zw11   3.0
10  24/05/2020  zw12   3.0
6   23/12/2021  zw12   2.0
9   22/05/2020  zw11   2.0
7   20/12/2021  zw12   1.0
8   19/12/2021  zw11   1.0
正如您所看到的,秩函数并没有按我所希望的那样赋值。我用错了吗? 我希望列“Rank”中的最新/原始记录为0,重复/旧记录为1

期望输出:-

            Date bikes  rank
    0   28/12/2021  zw12   1.0   
    1   28/12/2021  zw11   1.0
    2   28/12/2021  zw13   1.0
    3   28/12/2021  zw14   1.0
    4   26/12/2021  zw11   2.0
    5   25/12/2021  zw11   2.0
    10  24/05/2020  zw12   2.0
    6   23/12/2021  zw12   2.0
    9   22/05/2020  zw11   2.0
    7   20/12/2021  zw12   2.0
    8   19/12/2021  zw11   2.0

假设
Date
列的类型为datetime,则:

from itertools import count
from collections import defaultdict

d = defaultdict(count)

df = df.sort_values(by="Date", ascending=False)
df["rank"] = (
    df.groupby("Date", sort=False)["bikes"]
    .transform(lambda x: [next(d[v]) for v in x])
    .gt(0)
    .astype(int)
)
print(df)
印刷品:

日期排序
6 2021-12-28 zw12 0
7 2021-12-28 zw11 0
8 2021-12-28 zw13 0
9 2021-12-28 zw14 0
10 2021-12-26 zw11 1
0 2021-12-25 zw11 1
2021-12-23 zw12 1
2021-12-20 zw12 1
3 2021-12-19 zw11 1
5 2020-05-24 zw12 1
4 2020-05-22 ZW111 1

@Pysdm
.gt
更大。类似于
哦,明白了!!非常感谢。