我正在使用库存搜索系统,其中一项功能是返回日期范围内的所有行。
问题是,有多个共享相同日期的行,但是每个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对其进行排序,但这似乎是一种糟糕的方法。
我应该如何解决这个问题?谢谢。
答案 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