首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按预定义列表排序值

按预定义列表排序值
EN

Stack Overflow用户
提问于 2018-04-04 05:47:24
回答 1查看 49关注 0票数 0

如果我已经创建了一个预定义的列表,比如说按照“猫”,"AI",“中银”的顺序排名前3位的股票,我如何才能从下面的原始数据帧中获得这个新的数据帧呢?这个原始数据帧实际上是按照上面预定义列表显示的顺序来sort_value股票代码列的。(仍按时间顺序排列)

谢谢

代码语言:javascript
复制
     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
EN

回答 1

Stack Overflow用户

发布于 2018-04-04 05:53:05

一种选择是创建一个有序的分类列,对其应用argsort,它将返回正确的索引以重新排序数据框:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49639619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档