Quantcast
Viewing latest article 1
Browse Latest Browse All 6

Answer by cglacet for DataFrame sorting based on a function of multiple column values

Another approach, similar to this one is to use argsort which returns the indexes permutation directly:

f = lambda r: r.x**2 + r.y**2df.iloc[df.apply(f, axis=1).argsort()]

I think using argsort better translates the idea than a regular sort (we don't care about the value of this computation, only about the resulting indexes).

It could also be interesting to patch the DataFrame to add this functionality:

def apply_sort(self, *, key):    return self.iloc[self.apply(key, axis=1).argsort()]pd.DataFrame.apply_sort = apply_sort

We can then simply write:

>>> df.apply_sort(key=f)   x  y letter2  1  3      b3  4  2      b1  3  4      a4  5  1      c0  2  5      a

Viewing latest article 1
Browse Latest Browse All 6

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>