【问题标题】:Sort value by predefined list [duplicate]按预定义列表对值进行排序[重复]
【发布时间】:2018-04-03 21:47:24
【问题描述】:

如果我创建了一个预定义的列表,比如按 ["CAT","AI","BOC"] 的顺序排列的前 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

【问题讨论】:

标签: python pandas sorting dataframe


【解决方案1】:

一种选择是创建一个有序的分类列,在其上应用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多