对两列进行排序,并使用pandas为数据框中的排序值创建新列

时间:2019-10-21 11:09:11

标签: python pandas dataframe

我有下面的数据框。我想对数据帧d1中的列'X'进行排序,并按照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

预期的DataFrame

   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 个答案:

答案 0 :(得分:1)

使用DataFrame.sort_valuesDataFrame.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