熊猫自定义排序

时间:2019-07-01 12:22:12

标签: python pandas

这是我的数据框:

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

2 个答案:

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