我有一个带有示例数据的数据框,像这样;
ID,CLASS,CLASS_ID,EXPIRY,VOLUME
1,012345,12,70,100
2,987654,99,10,800
3,012345,11,70,200
4,012345,10,60,700
5,987654,24,20,300
6,012345,06,70,900
7,987654,08,60,500
议程是选择具有最大EXPIRY
的那些不同的记录。如果为987654
,则为
7,987654,08,60,500
我可以很容易地做到这一点,
df.sort_values(['CLASS','EXPIRY'], inplace=True, ascending=False)
df.drop_duplicates(subset=['CLASS'], inplace=True)
但是如果012345
有多个记录,且到期日为70
。因此,在这种情况下(即,基于CLASS
和EXPIRY
进行排序后,当且仅当找到了多个具有最高值EXPIRY
的记录时),从具有最高VOLUME
的记录中选择具有最高EXPIRY
的记录。这就是我的问题。
预期输出:
ID,CLASS,CLASS_ID,EXPIRY,VOLUME
7,987654,08,60,500
6,012345,6,70,900 #this record has greatest `VOLUME` among the records having common `EXPIRY`
有人可以用Python的方式帮助吗?