我有下面的数据框。我想对数据帧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
的值相同。
答案 0 :(得分:1)
使用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