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

时间:2018-08-11 21:31:26

标签: python pandas

我正在使用库存搜索系统,其中一项功能是返回日期范围内的所有行。

问题是,有多个共享相同日期的行,但是每个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, ...。 / p>

我用groupby尝试了一些方法,但是这些方法都不起作用。

我唯一想到的方法是将“主数据框”分隔为具有相同日期的较小数据框,然后按ID对其进行排序,但这似乎是一种糟糕的方法。

我应该如何解决这个问题?谢谢。

2 个答案:

答案 0 :(得分:4)

使用drop_duplicates

df.sort_values('id').drop_duplicates('date',keep='last')

答案 1 :(得分:2)

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