如果我创建了一个预定义的列表,按照[" CAT"," AI"," BOC"]的顺序说前3个股票,怎么能我从下面的原始数据框中得到这个新的数据框,它基本上按照上面预定义列表的显示顺序对ticker列进行sort_value? (仍按时间顺序排列)
由于
date price ticker volume
0 2018-01-01 1.323 AI 2000
1 2018-01-02 1.525 AI 1500
2 2018-01-03 1.045 AI 500
3 2018-01-01 2.110 BOC 3201
4 2018-01-02 2.150 BOC 5200
5 2018-01-03 2.810 BOC 1980
6 2018-01-01 5.199 CAT 2000
7 2018-01-02 4.980 CAT 450
8 2018-01-03 4.990 CAT 3000
答案 0 :(得分:1)
一个选项可能是创建一个有序的 Categorical 列,在其上应用argsort
,返回正确的索引以重新排序数据框:
df.iloc[pd.Categorical(df.ticker, categories=["CAT","AI", "BOC"], ordered=True).argsort()]
# date price ticker volume
#6 2018-01-01 5.199 CAT 2000
#7 2018-01-02 4.980 CAT 450
#8 2018-01-03 4.990 CAT 3000
#0 2018-01-01 1.323 AI 2000
#1 2018-01-02 1.525 AI 1500
#2 2018-01-03 1.045 AI 500
#3 2018-01-01 2.110 BOC 3201
#4 2018-01-02 2.150 BOC 5200
#5 2018-01-03 2.810 BOC 1980