Вы можете попробовать это:
df = pd.DataFrame({'col1':[ [2,3,1], [3,2,1] ],
'col2':[ ['a','b','c'], ['a','b','c'] ],
'col3':[ ['d','e','f'], ['d','e','f'] ]})
def custom_sort(x):
col1 = sorted(enumerate(x.col1), key=lambda k: k[1])
col2 = [x.col2[i] for i, _ in col1]
col3 = [x.col3[i] for i, _ in col1]
return [v for _, v in col1], col2, col3
df[['col1', 'col2', 'col3']] = df[['col1', 'col2', 'col3']].apply(custom_sort, axis=1, result_type='expand')
print(df)
Отпечатки:
col1 col2 col3
0 [1, 2, 3] [c, a, b] [f, d, e]
1 [1, 2, 3] [c, b, a] [f, e, d]