繁体   English   中英

当它们都共享相同的日期时,获得具有列最高值的行?

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

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