为数据框中的日期列创建按主题划分的时间点



我有一个数据框,其中包含主题 id 的列和包含日期信息的列。我想创建第三个变量,指示每个主题的日期的时间顺序。举个例子:

import pandas as pd
df = pd.DataFrame({'ID':[1,1,2,2,3,3,3],
'Date':[20191219,
20191220,
20191220,
20191219,
20191219,
20191220,
20191221]})

这为您提供:

ID      Date
0   1  20191219
1   1  20191220
2   2  20191220
3   2  20191219
4   3  20191219
5   3  20191220
6   3  20191221

添加第三个变量t,以便获得:

ID      Date  t
0   1  20191219  0
1   1  20191220  1
2   2  20191220  1
3   2  20191219  0
4   3  20191219  0
5   3  20191220  1
6   3  20191221  2

澄清后,我认为您需要groupby.cumcount()方法,但在此之前,您需要按ID对值进行排序,并Date并删除任何重复项:

import pandas as pd
df = pd.DataFrame({'ID':[1,1,2,2,3,3,3,4],
'Foo':['a','b','c','d','e','f','g','h'],
'Date':[20191219,
20191219,
20191220,
20191219,
20191219,
20191220,
20191221,
20191222]})
df['t'] = df.sort_values(['ID', 'Date']).drop_duplicates(['ID', 'Date']).groupby('ID').cumcount()
df['t'] = df['t'].fillna(method='ffill').astype(int)
print(df)

指纹:

ID Foo      Date  t
0   1   a  20191219  0
1   1   b  20191219  0
2   2   c  20191220  1
3   2   d  20191219  0
4   3   e  20191219  0
5   3   f  20191220  1
6   3   g  20191221  2
7   4   h  20191222  0

最新更新