这是我的数据框:
df1 = pd.DataFrame({'sym': ['msft', 'tsla', 'amd', 'bac'], 'close': [102, 100, 35, 30]})
我想使用df
列的自定义顺序对sym
进行排序。
我想要的结果如下:
sym close
0 bac 30
1 tsla 100
2 msft 102
3 amd 35
答案 0 :(得分:1)
鉴于这似乎是一个非常随意的顺序,我认为您最好的选择是添加另一列以表示您希望元素所处的顺序,并按这些值的顺序排序,然后从数据框。但是,根据数据框的大小,这可能需要很多工作。再说一次,无论如何,对大数据帧进行任意排序都是一项繁重的工作。
所以,您可以做什么:
df1['order']=[3,2,4,1]
df1.sort_values(by='order', inplace=True)
df1.drop('order', axis=1,inplace=True)
df1.reset_index(drop=True, inplace=True)
答案 1 :(得分:1)
您可以使用numpy.argsort
指定所需的顺序。
尝试一下:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'sym': ['msft', 'tsla', 'amd', 'bac'], 'close': [102, 100, 35, 30]})
df1 = df1.loc[np.argsort([2, 1, 3, 0])].reset_index(drop=True)
print(df1)
输出:
sym close
0 bac 30
1 tsla 100
2 msft 102
3 amd 35