我正在寻找一种方法来查找DataFrame中倒数第二个值。下面的脚本正在正确地查找最大值,但是,我需要找到max-1,所以如果版本是4,我需要在我的DataFrame中找到版本3。
df.groupby('ID').max()['version']
在MySQL中,可以使用以下查询完成:
"SELECT *, max(version) - 1 FROM product GROUP BY ID;"
然而,我像max((-1这样的东西在熊猫身上不起作用。你能给我一些关于如何获得期望值的提示吗
使用GroupBy.cumcount
和ascending=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')