gpt4 book ai didi

python - 根据 ID 获取最大日期的匹配类别结果

转载 作者:行者123 更新时间:2023-12-01 08:18:34 25 4
gpt4 key购买 nike

对于类别匹配的每个 ID,我想查找与最新日期对应的行,然后返回不同列中的条目。

这是 MRE。

exFilterDF= pd.DataFrame([['1234','1234','1234','5678','5678','5678','9TJQ','9TJQ','9TJQ'],\
['good','ignore','good','good','good','ignore','good','good','ignore'],
['2017-11-10 12:40:07','2017-12-18 14:00:07','2017-12-13 17:40:07','2017-12-12 11:40:07','2017-12-19 16:40:07'\
,'2017-10-26 17:40:07','2017-12-13 17:40:07','2017-12-27 13:40:07','2017-10-12 13:40:07'],
['ReturnA','ReturnB','ReturnC','ReturnD','ReturnE','ReturnF','ReturnG','ReturnH','ReturnI']]).transpose()
exFilterDF.columns = ["ID","Category","Date","Result"]
exFilterDF

最终的答案应该是

answerDF= pd.DataFrame([['1234','5678','9TJQ'],['ReturnC','ReturnE','ReturnH']]).transpose()
answerDF.columns = ["ID","Result"]
answerDF

这将像我提出的已得到回答的问题一样开始 here

不幸的是,我不能只匹配已经找到的 max(date)s,因为,例如,在这个集合中,2017-12-13 17:40:07 是正确的日期对于 ReturnC 行,但相同的时间戳位于 ReturnG 行(不应返回),因此如果我们通过标记“好日期”然后过滤来解决此问题在这些上,我们会得到额外的(错误的)结果。

最佳答案

你可以groupby Categorygood 的值中的 ID,并使用 idxmax在最新日期索引数据框:

exFilterDF.Date = pd.to_datetime(exFilterDF.Date)
m = exFilterDF[exFilterDF.Category.eq('good')].groupby('ID').Date.idxmax()
exFilterDF.loc[m, ['ID', 'Result']]

ID Result
2 1234 ReturnC
4 5678 ReturnE
7 9TJQ ReturnH

关于python - 根据 ID 获取最大日期的匹配类别结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54834993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com