添加 groupby min / max / count 聚合

lpt*_*lpt 3 python date dataframe 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
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:

以列ex_one为例,然后根据( ) 和( ) 值228055计算出现次数fake_datemaxfake_datemin228055

 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
Run Code Online (Sandbox Code Playgroud)

jpp*_*jpp 7

这是一种方法。

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')
Run Code Online (Sandbox Code Playgroud)

结果

   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
Run Code Online (Sandbox Code Playgroud)

解释

  • 如果尚未完成,则将fake_date种姓列作为类型​​。datetime
  • groupby使用 3 个聚合创建一个数据框。
  • 与原始数据框左合并。