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

Python:对DataFrame指定列子集按日期列标签排序

对DataFrame的日期列标签进行排序的解决方案

当然可以实现这个需求!我们只需要简单几步就能完成日期列的排序,同时让对应的数据跟着列顺序调整,完美匹配你想要的结果。

步骤说明

  1. 提取并排序日期列:首先筛选出除了Label1之外的日期列,由于这些列本身是datetime类型,我们可以直接用sorted()函数按日期升序排列。
  2. 重构列顺序:将Label1列放在最前面,后面跟上排序后的日期列,形成新的列顺序。
  3. 重新索引DataFrame:使用新的列顺序对原DataFrame进行索引,就能得到列按日期排序后的结果。

完整代码实现

import pandas as pd
import numpy as np

# 构造原始DataFrame
A = pd.DataFrame(
    [['A','A1',1, 6], ['B','B1' ,3,4], ['C', 'C2', 5,7], ['D','D1',7,2], ['E','E4',9,4], ['F','F1',11,6]],
    columns=['Label1',pd.to_datetime('2016-03-31') , pd.to_datetime('2016-05-31'),pd.to_datetime('2016-04-30')]
)

# 提取日期列并排序
date_cols = sorted(A.columns[1:])  # 从第2列开始都是日期列,按日期升序排序

# 构造新的列顺序:Label1 + 排序后的日期列
new_columns = ['Label1'] + date_cols

# 重新索引得到结果
sorted_df = A[new_columns]

# 查看结果
print(sorted_df)

输出结果

运行上述代码后,你会得到完全符合期望的DataFrame:

Label1 2016-03-31 2016-04-30 2016-05-31
0      A        A1          6          1
1      B        B1          4          3
2      C        C2          7          5
3      D        D1          2          7
4      E        E4          4          9
5      F        F1          6         11

如果你的日期列是字符串类型而不是datetime,只需要先把列转换为datetime类型再排序即可,比如:

date_cols = sorted(pd.to_datetime(A.columns[1:])).strftime('%Y-%m-%d')

不过在你的案例中,列已经是datetime类型,所以直接排序就可以啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:51:20