添加groupby最小/最大/计数聚合

问题描述 投票:1回答:1

我有以下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_datemax)和fake_datemin)值为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
python pandas date dataframe
1个回答
1
投票

这是一种方式。

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

说明

  • Caste fake_date列如datetime类型,如果尚未完成。
  • 使用3个聚合创建groupby数据框。
  • 左边合并原始数据帧。
© www.soinside.com 2019 - 2024. All rights reserved.