DataFrame sorting based on a function of multiple column values
Have you tried to create a new column and then sorting on that. I cannot comment on the original post, so i am just posting my solution.
df['c'] = df.a**2 + df.b**2
df = df.sort_values('c')
df.loc[(df.x ** 2 + df.y ** 2).sort_values().index]
after How to sort pandas dataframe by custom order on string index
You can create a temporary column to use in sort and then drop it:
df.assign(f = df['one']**2 + df['two']**2).sort_values('f').drop('f', axis=1)
Out:
letter one two
2 b 1 3
3 b 4 2
1 a 3 4
4 c 5 1
0 a 2 5