提问人:Paulo Cortez 提问时间:3/22/2023 更新时间:3/22/2023 访问量:29
创建按第一个开始日期对 ID 进行排序的列
Create column that orders ID by first Start Date
问:
假设我有以下数据帧:
ID Start Date
1 1990-01-01
1 1990-01-01
1 1991-01-01
2 1991-01-01
2 1990-01-01
3 2002-01-01
3 2000-01-01
4 1991-01-01
创建名为 Order 的列的最佳方法是什么,对于 ID 列中的每个唯一 ID,从最早的开始日期的 1 开始,并将 1 添加到后续的最早开始日期(如果值相同,则顺序无关紧要)生成以下数据帧:
ID Start Date Order
1 1990-01-01 2
1 1990-01-01 3
1 1989-01-01 1
2 1991-01-01 2
2 1990-01-01 1
3 2002-01-01 2
3 2000-01-01 1
4 1991-01-01 1
答:
1赞
mozway
3/22/2023
#1
使用 groupby.rank
:
df['Start Date'] = pd.to_datetime(df['Start Date'])
df['Order'] = df.groupby('ID')['Start Date'].rank('first', ascending=False).astype(int)
输出:
ID Start Date Order
0 1 1990-01-01 2
1 1 1990-01-01 3
2 1 1991-01-01 1
3 2 1991-01-01 1
4 2 1990-01-01 2
5 3 2002-01-01 1
6 3 2000-01-01 2
7 4 1991-01-01 1
跟:ascending=True
ID Start Date Order
0 1 1990-01-01 1
1 1 1990-01-01 2
2 1 1991-01-01 3
3 2 1991-01-01 2
4 2 1990-01-01 1
5 3 2002-01-01 2
6 3 2000-01-01 1
7 4 1991-01-01 1
评论