如果我已经创建了一个预定义的列表,比如说按照“猫”,"AI",“中银”的顺序排名前3位的股票,我如何才能从下面的原始数据帧中获得这个新的数据帧呢?这个原始数据帧实际上是按照上面预定义列表显示的顺序来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发布于 2018-04-04 05:53:05
一种选择是创建一个有序的分类列,对其应用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 1980https://stackoverflow.com/questions/49639619
复制相似问题