Если столбцы не имеют определенного значения, вероятно, проще просто перейти к массивам NumPy. В частности, вы можете использовать pd.Series.drop_duplicates
, чтобы избавиться от дублирующихся записей построчно, а затем просто использовать np.sort
для выполнения сортировки:
In [152]: df
Out[152]:
0 1 2 3 4 5
0 4.54 67.66 71.27 NaN 4.54 304.53
1 9.06 14.08 39.56 NaN 4.54 307.65
2 3.85 61.22 90.14 108.13 6.13 400.50
In [153]: np.sort(df.apply(lambda x: x.drop_duplicates(), axis=1))
Out[153]:
array([[ 4.54, 67.66, 71.27, 304.53, nan, nan],
[ 4.54, 9.06, 14.08, 39.56, 307.65, nan],
[ 3.85, 6.13, 61.22, 90.14, 108.13, 400.5 ]])
Если уместно, вы, конечно, можете превратить результат обратно в pd.DataFrame
. По желанию, дедупликация по строкам также может быть записана df.apply(pd.Series.drop_duplicates, axis=1)
.