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

Python Pandas DataFrame日期列格式统一与排序问题

处理DataFrame中格式混乱的日期列标题并排序

步骤1:解析列标题为datetime对象

利用pd.to_datetime()自动识别多种格式的日期字符串,同时处理无效日期(如2022-13-01这类非法月份的输入):

import pandas as pd

# 将列名转为datetime数组,errors='coerce'会把无效日期转为NaT(Not a Time)
date_cols = pd.to_datetime(out.columns, errors='coerce')

步骤2:统一列标题格式

把解析后的datetime对象转换为你需要的统一格式(比如YYYY-MM-DD),非日期列保留原始名称:

# 定义目标日期格式,可根据需求修改为'MM/DD/YYYY'等
target_format = '%Y-%m-%d'

# 生成新列名:有效日期用统一格式,无效/非日期列保留原名
new_columns = [dt.strftime(target_format) if pd.notna(dt) else col 
               for dt, col in zip(date_cols, out.columns)]

# 重命名DataFrame列
out.columns = new_columns

步骤3:按日期排序列

分离日期列与非日期列,对日期列进行升序/降序排序后重新排列:

# 区分日期列和非日期列
date_columns = [col for col in out.columns if pd.to_datetime(col, errors='coerce') is not pd.NaT]
non_date_columns = [col for col in out.columns if col not in date_columns]

# 升序排序日期列,降序则添加reverse=True参数
sorted_date_cols = sorted(date_columns, key=lambda x: pd.to_datetime(x))

# 重新排列列(非日期列在前,排序后的日期列在后,可按需调整顺序)
out = out[non_date_columns + sorted_date_cols]

# 降序排序写法:
# sorted_date_cols = sorted(date_columns, key=lambda x: pd.to_datetime(x), reverse=True)

无效日期处理提示

像2022-13-01这类非法日期会被转为NaT,对应的列会保留原始名称,你可以根据业务需求选择删除、手动重命名或进一步校验修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:49:56