see #7568 - nth is a fair bit slower than first/last which are calling cython routines. In a case where you don't dropna you can simply call the cython aggregation routines - side issue is to move the group_last_object/group_nth_object from algos.pyx to generate_code.py (simply move group_last/group_nth from the groupby template to the same as group_count template, which generates the object dtypes) - trap and reraise an error like ValueError buffer type mismatch in the cython trials. This is generated when a built in routine tries to use the cython routines, but the function is not defined (but it SHOULD be defined for all dtypes), so this is a trapped bug (in which case it goes to the python path).

Comment From: jreback

these are pretty ok now.