[英]Group common ID's based on most and the least recent date
尝试从我的数据中的两个字段中获取最高和最低日期,并根据 id 对它们进行分组。 我注意到我的日期字段有一个字符串,它阻止排序并限制我获得正确的结果。
我的数据集--df
ID | 登录 | 登出 |
---|---|---|
1 | 2020 年 1 月 11 日 | 2021 年 3 月 23 日 |
1 | 2020 年 8 月 12 日 | 现在 |
1 | 2018 年 1 月 10 日 | 现在 |
1 | 2021 年 2 月 2 日 | 2021 年 2 月 3 日 |
2 | 1990 年 4 月 5 日 | 2021 年 3 月 22 日 |
3 | 2010 年 1 月 25 日 | 2021 年 2 月 22 日 |
2 | 2015 年 6 月 12 日 | 现在 |
4 | 现在 | 现在 |
我得到了什么:
ID | 登录 | 登出 |
---|---|---|
1 | 2018 年 1 月 10 日 | 现在 |
2 | 1990 年 4 月 5 日 | 现在 |
3 | 2010 年 1 月 25 日 | 2021 年 2 月 22 日 |
4 | 现在 | 现在 |
我如何期望 output
ID | 登录 | 登出 |
---|---|---|
1 | 2018 年 1 月 10 日 | 2021 年 3 月 23 日 |
2 | 1990 年 4 月 5 日 | 2021 年 3 月 22 日 |
3 | 2010 年 1 月 25 日 | 2021 年 2 月 22 日 |
4 | 现在 | 现在 |
my code:
sample= {'login':'min', 'logout':'max'}
final= df.groupby(['id'], sort=True).agg(sample)
我的方法或 python 中解决此问题的更好方法有什么问题吗? 或者除了替换df中的字符串之外,还有其他避免字符串的聪明方法吗? (我来自 sql,所以仍然习惯于 pythonic 的东西:) 提前谢谢
那是因为就字符串比较而言, 'now' > '03/23/2021'
。 您now
可以尝试用较小的字符串替换:
tmp_now = '000000'
(df.replace('now',tmp_now)
.groupby(['id'], sort=True).agg(sample)
.replace(tmp_now,'now')
)
Output:
login logout
id
1 01/10/2018 03/23/2021
2 04/05/1990 03/22/2021
3 01/25/2010 02/22/2021
4 now now
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.