Сортировать два столбца и создать новые столбцы для отсортированных значений из кадра данных, используя панды - PullRequest
1 голос
/ 21 октября 2019

У меня ниже датафрейма. Я хочу отсортировать столбец 'X' из кадра данных d1 и сохранить порядок Y согласно значениям X. и затем создайте новый фрейм данных с именем df2, в котором выполняется сортировка, но исходный фрейм данных должен оставаться без изменений.

import pandas as pd
d1 = {'X':[1,3,5,6], 'Y':[0.5,0.7,0.2,0.9]}
df= pd.DataFrame(d1)

Оригинальный фрейм данных

   X    Y
0  1  0.5
1  3  0.7
2  5  0.2
3  6  0.9

Ожидаемый фрейм данных

   X    Y  X_Sorted  Y_Sorted
0  4  0.5         6       0.9
1  3  0.7         5       0.2
2  5  0.2         4       0.5
3  6  0.9         3       0.7

Здесь Y_Sorted согласно индексу X значений.

Y значения останутся такими же, как для x_sorted значений.

1 Ответ

1 голос
/ 21 октября 2019

Используйте DataFrame.sort_values, DataFrame.add_suffix, создайте индекс по умолчанию и последний concat:

df1 = (df[['X','Y']].sort_values('X', ascending=False)
                    .add_suffix('_sorted')
                    .reset_index(drop=True))
df = pd.concat([df, df1], axis=1)
print (df)
   X    Y  X_sorted  Y_sorted
0  1  0.5         6       0.9
1  3  0.7         5       0.2
2  5  0.2         3       0.7
3  6  0.9         1       0.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...