def first(self, values, axis=0):
    'return values at first occurance of its associated key\n\n        Parameters\n        ----------\n        values : array_like, [keys, ...]\n            values to pick the first value of per group\n        axis : int, optional\n            alternative reduction axis for values\n\n        Returns\n        -------\n        unique: ndarray, [groups]\n            unique keys\n        reduced : ndarray, [groups, ...]\n            value array, reduced over groups\n        '
    values = np.asarray(values)
    return (self.unique, np.take(values, self.index.sorter[self.index.start], axis))
return values at first occurance of its associated key

Parameters
----------
values : array_like, [keys, ...]
    values to pick the first value of per group
axis : int, optional
    alternative reduction axis for values

Returns
-------
unique: ndarray, [groups]
    unique keys
reduced : ndarray, [groups, ...]
    value array, reduced over groups
def first(self, values, axis=0):
    'return values at first occurance of its associated key\n\n        Parameters\n        ----------\n        values : array_like, [keys, ...]\n            values to pick the first value of per group\n        axis : int, optional\n            alternative reduction axis for values\n\n        Returns\n        -------\n        unique: ndarray, [groups]\n            unique keys\n        reduced : ndarray, [groups, ...]\n            value array, reduced over groups\n        '
    values = np.asarray(values)
    return (self.unique, np.take(values, self.index.sorter[self.index.start], axis))