如何对Dataframe先按时间索引排序再按Ticker列做二次排序
操作方法
你可以直接用pandas内置的sort_values方法实现需求,该方法支持同时按索引层级和指定列排序,不会打乱你已经排好的日期索引顺序:
# 替换df为你的DataFrame实际变量名 sorted_df = df.sort_values(by="Ticker", level=0, ascending=True)
参数说明:
level=0:指定优先按第0级索引(也就是你的datetime日期索引)排序,完全保留原有日期的先后顺序ascending=True:指定Ticker列按字母升序排列,如果你需要倒序可以改成False
如果你的datetime索引包含时分秒,需要**按自然日期(忽略时间部分)**分组后再组内排序,可以用如下写法:
sorted_df = df.groupby( df.index.date, group_keys=False, # 不额外生成分组索引列 sort=False # 保留原有日期分组的先后顺序,不额外重排 ).apply(lambda x: x.sort_values("Ticker", ascending=True))
内容的提问来源于stack exchange,提问作者Sam44
相关产品推荐
相关产品推荐

