我有以下pandas数据帧。
ex_one ex_two weight fake_date
0 228055 231908 1 2004-12-17
1 228056 228899 1 2000-02-26
2 228050 230029 1 2003-01-27
3 228055 230564 1 2001-07-25
4 228059 230548 1 2002-05-04
这就是我想要的:
来自ex_one
专栏,以228055
为例,然后基于fake_date
(max
)和fake_date
(min
)值为228055
计算出现次数
ex_one ex_two weight fake_date max_date min_date frequency
0 228055 231908 1 2004-12-17 2004-12-17 2001-07-25 2
1 228056 228899 1 2000-02-26
2 228050 230029 1 2003-01-27
3 228055 230564 1 2001-07-25
4 228059 230548 1 2002-05-04
这是一种方式。
df['fake_date'] = pd.to_datetime(df['fake_date'])
g = df.groupby('ex_one')['fake_date'].agg(['min', 'max', 'count']).reset_index()
res = df.merge(g, how='left')
结果
ex_one ex_two weight fake_date min max count
0 228055 231908 1 2004-12-17 2004-12-17 2004-12-17 1
1 228056 228899 1 2000-02-26 2000-02-26 2000-02-26 1
2 228050 230029 1 2003-01-27 2003-01-27 2003-01-27 1
3 228059 230564 1 2001-07-25 2001-07-25 2002-05-04 2
4 228059 230548 1 2002-05-04 2001-07-25 2002-05-04 2
说明
fake_date
列如datetime
类型,如果尚未完成。groupby
数据框。