假设我们有一个具有以下格式的数据帧。
- 有三列,即日期、ID和状态
- ID可能不是每个实例都唯一的,并且可能重复。例如,1、2、2、1、4、5、4、。。。。。。等等
现在,对于该数据帧的给定行,我们需要执行以下操作;
查找变量State在所有未来日期内与该一路领先对应的ID的所有实例上的最大值。
例如,ID号1在索引10、12、40、100处重复,日期分别为31/3/20、30/6/20、30/9/20和31/12/20。现在,在索引编号10处,我们需要找到变量State在索引10、12、40和100上的最大值,因为这些索引出现在当前日期31/3/20之后。在索引12,我们需要找到索引12、40和100上变量State的最大值,因为它们出现在当前日期30/6/20之后,依此类推
数据帧有8000多个唯一的id和100多万个观测值,因此在行上使用for循环会花费太多时间。有快速的方法吗?
df = df.sort_values('Date', ascending=False).drop_duplicates(['ID'])
这会为您提供每个ID的最新日期。