Вы можете добавить новый столбец в df1, который в данном примере называется sort_col. Тогда вы можете просто использовать .sort_values (). При необходимости вы можете установить значение True по возрастанию. Вы также можете использовать reset_index () после сортировки.
df1 = pd.read_clipboard(sep=r"[ ]{2,}", header=None, names=['idx', 'shared_column', 'column1'])
df2 = pd.read_clipboard(sep=r"[ ]{2,}", header=None, names=['idx', 'shared_column', 'column2'])
df1['sort_col'] = df2['shared_column']
df1.sort_values(by='sort_col', inplace=True, ascending=False)
print(df1)
idx shared_column column1 sort_col
0 0 Z59FTQD X 0 X 243 0 ICE2DJP X 0 X 4
4 4 0JP29SK X 3 X 243 0 ICE2DJP X 0 X 28
3 3 0JP29SK X 2 X 243 0 ICE2DJP X 0 X 23
2 2 0JP29SK X 1 X 243 0 ICE2DJP X 0 X 20
1 1 0JP29SK X 0 X 243 0 ICE2DJP X 0 X 13