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

如何按照指定顺序对DataFrame中存储列表的列进行元素排序

实现方法

核心思路

  • 先基于你给定的月份优先级顺序构造权重映射字典,每个月份对应唯一的排序权重,排序时按权重从小到大排列
  • 对Column 2的每一行列表元素,调用sorted方法指定排序key为上述权重即可

完整代码示例

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'Column 1': [1,2,3,4,5,6,7],
    'Column 2': [
        ['jan'],
        ['jan','feb'],
        ['feb','jan'],
        ['mar','april','jan'],
        ['jan','mar','april'],
        ['jan','feb','mar'],
        ['jan','feb','mar']
    ]
})

# 定义指定排序顺序,注意如果你原需求里的是march、示例里是mar,根据实际拼写调整对应值即可
custom_order = ['oct' ,'nov' ,'dec' ,'jan' ,'feb' ,'mar' ,'april']
# 构造排序权重字典
order_weight = {month: idx for idx, month in enumerate(custom_order)}

# 对Column2每行排序生成Column3
df['Column 3'] = df['Column 2'].apply(lambda x: sorted(x, key=lambda item: order_weight[item]))

# 输出结果验证
print(df)

注意事项

  • 如果你的数据中存在不在custom_order里的月份值,可以把排序key改成order_weight.get(item, 999),这样不存在的元素会默认排在列表末尾,避免报错
  • 如果你需要降序排序,给sorted方法加reverse=True参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:39:01