You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按指定期限顺序对Pandas DataFrame进行排序?

Pandas按自定义期限顺序排序DataFrame

要实现按你指定的真实期限顺序排序,核心是利用Pandas的**有序分类(Categorical)**类型来强制自定义排序规则,具体步骤如下:

  1. 定义目标排序顺序列表
    直接把需要的顺序写成列表,这就是排序的依据:
custom_tenor_order = [
    '1W', '2W', '3W', '1M', '2M', '3M', 
    '6M', '9M', '1Y', '2Y', '3Y', '4Y', 
    '5Y', '7Y', '10Y', '12Y', '15Y', '20Y', '25Y', '30Y'
]
  1. 将DataFrame第一列转换为有序分类类型
    把第一列的数据类型改成Categorical,并指定我们定义的顺序为分类的有效顺序:
import pandas as pd

# 假设你的DataFrame名为df,先获取第一列的列名
tenor_column = df.columns[0]
# 转换为有序分类
df[tenor_column] = pd.Categorical(
    df[tenor_column],
    categories=custom_tenor_order,
    ordered=True
)
  1. 执行排序
    直接用sort_values方法按该列排序即可:
df_sorted = df.sort_values(tenor_column)

关键说明

  • 这种方法避免了默认字符串排序的缺陷(比如字典序会让10Y排在1M前面),完全贴合业务上的期限逻辑。
  • 如果DataFrame中存在不在custom_tenor_order里的期限值,转换后会变成NaN,排序时默认会被放到结果的最后,你可以根据需求用dropna()删除这类行,或者补充到分类列表中。

内容的提问来源于stack exchange,提问作者Guillem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:05:33