【问题标题】:Adding groupby min / max / count aggregations添加 groupby min / max / count 聚合
【发布时间】:2018-03-28 00:18:59
【问题描述】:

我有以下熊猫数据框。

 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 为例,然后根据228055 的fake_date (max) 和fake_date(min) 值计算出现次数

 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 中,索引 3 的 ex_one=228059。在输出中,它变为 228055。如何?
  • 哦,抱歉,这只是我想使用的一个示例。我手动更改了它。 ex_one 中的每个值都有超过 100 个计数。这样做仅用于演示目的。

标签: python pandas date dataframe


【解决方案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 数据框。
  • 与原始数据框左合并。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 2014-12-11
    • 1970-01-01
    • 2021-02-25
    • 2021-10-19
    • 2019-02-11
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多