首页 > 解决方案 > 如何根据数据帧中的时间顺序和重复值分配一个值从 1 到 N 的新列?

问题描述

例子:

id      date      seq 
a    2019/11/01    1
a    2019/12/01    2
b    2019/10/01    1
c    2019/12/01    2
c    2019/11/01    1

我想seq在 columns 上分配 column base date and id,后者是重复的。详情如下:

标签: pandas

解决方案


您也可以使用排名方法

import pandas as pd
    df = pd.DataFrame({'id':[1,1,2,3,3],
                       'date':['2019/11/01',
    '2019/12/01',
    '2019/10/01',
    '2019/12/01',
    '2019/11/01']})

df['date'] = pd.to_datetime(df['date'])  # first convert to datetime
df['seq'] = df.groupby('id')['date'].rank(method='dense').astype(int)


   id       date  seq
0   1 2019-11-01    1
1   1 2019-12-01    2
2   2 2019-10-01    1
3   3 2019-12-01    2
4   3 2019-11-01    1

推荐阅读