[英]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.