如何在DataFrame中查找并返回倒数第二个值



我正在寻找一种方法来查找DataFrame中倒数第二个值。下面的脚本正在正确地查找最大值,但是,我需要找到max-1,所以如果版本是4,我需要在我的DataFrame中找到版本3。

df.groupby('ID').max()['version']

在MySQL中,可以使用以下查询完成:

"SELECT *, max(version) - 1 FROM product GROUP BY ID;"

然而,我像max((-1这样的东西在熊猫身上不起作用。你能给我一些关于如何获得期望值的提示吗

使用GroupBy.cumcountascending=False并通过1进行比较,最后通过boolean indexing:进行过滤

df1 = df[df.groupby('ID').cumcount(ascending=False).eq(1)]

如果versions是整数:

df2 = df[df.groupby('ID')['version'].transform('max').sub(1).eq(df['version'])]
df2 = df2.drop_duplicates('ID')