繁体   English   中英

获取每个熊猫 cloumn 值的最后条件值

[英]Get Last condition value for each pandas cloumn value

我有一个像这样的 Df:

date_from date_to item_id VALUE_NEW VALUE_OLD 成本变量
1900 年 1 月 1 日 00:00:00 2022 年 11 月 3 日 15:31:18 452953 5366,46 4024,71 33.34%
2022 年 11 月 3 日 15:31:18 2200 年 1 月 1 日 00:00:00 452953 9122,57 5366,46 69.99%
1900 年 1 月 1 日 00:00:00 2022 年 11 月 3 日 15:31:18 452954 5366,46 4024,71 33.34%
2022 年 11 月 3 日 15:31:18 2200 年 1 月 1 日 00:00:00 452954 9122,57 5366,46 69.99%
1900 年 1 月 1 日 00:00:00 21/7/2021 16:30:46 452961 6170,98 4024,71 53.33%
21/7/2021 16:30:46 2022 年 11 月 3 日 15:31:09 452961 5312 6170,98 13.92%
2022 年 11 月 3 日 15:31:09 2200 年 1 月 1 日 00:00:00 452961 9122,57 5312 71.74%
1900 年 1 月 1 日 00:00:00 13/10/2021 14:39:55 801286 4052,1 1332,8 204.03%
13/10/2021 14:39:55 13/10/2021 14:43:09 801286 4,4732 4052,1 99.89%
13/10/2021 14:43:09 2022 年 3 月 2 日 17:16:23 801286 4473,2 4,4732 99900.00%
2022 年 3 月 2 日 17:16:23 2200 年 1 月 1 日 00:00:00 801286 4946,8 4473,2 10.59%

我需要检查每个 item_id,并获取 cost_var > 60% 的最后一行。 如果它是最后一行,那没关系,但如果有下一行,它 <60%,我必须删除最后一行>60%。 输出应如下所示:

date_from date_to item_id VALUE_NEW VALUE_OLD 成本变量
2022 年 11 月 3 日 15:31:18 2200 年 1 月 1 日 00:00:00 452953 9122,57 5366,46 69.99%
2022 年 11 月 3 日 15:31:18 2200 年 1 月 1 日 00:00:00 452954 9122,57 5366,46 69.99%
2022 年 11 月 3 日 15:31:09 2200 年 1 月 1 日 00:00:00 452961 9122,57 5312 71.74%

项目 802186 没有返回任何值,因为最后一行>60% (99900.00%) 有下一行,并且 cost_var<60% (10.59%)...有可能吗? 我找不到解决它的方法。

尝试这个

# read data
df = pd.read_clipboard()
# select the last row of each item_id and only select ones where cost_var > 60%
df.groupby(df.item_id, as_index=False).last().query("cost_var.str.rstrip('%').astype('float')>60", engine='python')

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM