如何在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |