[英]Get the row with highest value of a column when they all share same dates?
我正在使用库存搜索系统,其中一项功能是返回日期范围内的所有行。
事实是,有多个共享相同日期的行,但是每个ID都是唯一的且不同。 ID越高,条目越晚。
数据框如下所示:
id, date, item1, item2, ....
1, 8-11-2018, 10, 10, ...
2, 8-11-2018, 10, 10, ...
3, 8-11-2018, 10, 10, ...
4, 8-13-2018, 10, 10, ...
5, 8-13-2018, 10, 10, ...
6, 8-14-2018, 10, 10, ...
因此,如果我的日期范围是从2018年8月11日到2018年8月14日,将返回的行是3, 8-11-2018, 10, 10, ...
5, 8-13-2018, 10, 10, ...
和6, 8-14-2018, 10, 10, ...
我用groupby
尝试了一些东西,但是这些方法都groupby
。
我能想到的唯一方法是将“主数据框”分离为具有相同日期的较小数据框,然后按ID对其进行排序,但这似乎是一种糟糕的方法。
我应该如何解决这个问题? 谢谢。
使用drop_duplicates
df.sort_values('id').drop_duplicates('date',keep='last')
groupby
您的date
栏,使用idxmax
得到你所需要的行ID,并使用iloc
访问您需要的行:
df.iloc[df.groupby('date').id.idxmax()]
id date item1 item2
2 3 8-11-2018 10 10
4 5 8-13-2018 10 10
5 6 8-14-2018 10 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.