Сначала необходимо преобразовать значения в целые числа, отсортировать, а затем преобразовать в строки обратно:
f = lambda x: ' '.join(map(str, sorted(map(int, x), reverse=True)))
#another solution
#f = lambda x: ' '.join(str(z) for z in sorted((int(y) for y in x), reverse=True))
df['string'] = df['string'].str.split().map(f)
print (df)
id string
0 1 879 345 -13 -456
1 2 249 158 35 9 -4 -53 -81 -926
2 3 945 -103 -506
Или:
f = lambda x: ' '.join(map(str, sorted(map(int, x.split()), reverse=True)))
df['string'] = df['string'].map(f)