我有一个数据帧,看起来像这样(英国日期(:
类型 | 日期 |
---|---|
1 | 2022年1月 |
2 | 2022年1月2日 |
3 | 2022年1月3日 |
1 | 2022年1月4日 |
2 | 2022年1月5日 |
2 | 06/01/2022 |
IIUC,你可以做:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
g = df.groupby('Type')['Date']
df['Previous count'] = g.cumcount()
df['Days since latest previous'] = g.diff().fillna('-1').dt.days
输出:
Type Date Previous count Days since latest previous
0 1 2022-01-01 0 -1
1 2 2022-01-02 0 -1
2 3 2022-01-03 0 -1
3 1 2022-01-04 1 3
4 2 2022-01-05 1 3
5 2 2022-01-06 2 1
注意。我在这里假设输入按日期排序
gg1=df1.assign(Date=pd.to_datetime(df1.Date,format="%d/%M/%Y")).groupby('Type',sort=False)
col1=gg1.cumcount()
col2=gg1.Date.diff().dt.days.fillna(-1).astype(int)
df1.assign(**{"Previous count":col1,"Days since latest previous":col2})
出
Type Date Previous count Days since latest previous
0 1 01/01/2022 0 -1
1 2 02/01/2022 0 -1
2 3 03/01/2022 0 -1
3 1 04/01/2022 1 3
4 2 05/01/2022 1 3
5 2 06/01/2022 2 1