加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何在Pandas中的groupsBy中保留没有分组列

发布时间:2020-12-20 11:06:26 所属栏目:Python 来源:网络整理
导读:我有一个大熊猫的数据框,我想通过电子邮件分组,获取日期的最大值并保留状态列.但是在groupby上没有使用状态. 示例:给出以下数据帧df +-------------------------------+| email | status | date |+-------------------------------+| test1 | viewed | 01/0
我有一个大熊猫的数据框,我想通过电子邮件分组,获取日期的最大值并保留状态列.但是在groupby上没有使用状态.

示例:给出以下数据帧df

+-------------------------------+
|  email  |  status  |   date   |
+-------------------------------+
|  test1  |  viewed  | 01/07/18 |
---------------------------------
|  test1  |not viewed| 03/07/18 | 
---------------------------------
|  test2  |not viewed| 02/07/18 |
---------------------------------
|  test2  |  viewed  | 01/07/18 | 
---------------------------------
|  test3  |not viewed| 03/07/18 |
---------------------------------
|  test3  |  viewed  | 04/07/18 |
---------------------------------

我使用以下代码,但我想保留状态列,但我不知道如何.

df.groupby([email]).aggregate({'date': max})

期望的输出:

+-------------------------------+
|  email  |  status  |   date   |
+-------------------------------+    
|  test1  |not viewed| 03/07/18 | 
---------------------------------
|  test2  |not viewed| 02/07/18 | 
---------------------------------
|  test3  |  viewed  | 04/07/18 |
---------------------------------

总而言之,我希望通过电子邮件进行分组,获取最新日期并保留状态列

解决方法

而不是agg您可以按日期排序,使用groupby,并选择最后一个(这将是最新的):

df['date'] = pd.to_datetime(df.date)

df.sort_values('date').groupby('email',as_index=False).last()

   email      status       date
0  test1  not viewed 2018-03-07
1  test2  not viewed 2018-02-07
2  test3      viewed 2018-04-07

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读