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

pd.to_datetime未识别年份,取最大日期结果异常求助

Pandas日期解析错误导致max()返回旧日期的问题

问题描述

我搜索了2小时未找到可行解决方案:处理数据集时尝试获取最新日期,但代码未正确识别年份。数据集包含日期:01/09/2023、12/21/2022、12/09/2022、11/19/2022,执行以下代码后,st.write输出的最大日期为12/21/2022,而非预期的01/09/2023,说明年份未被正确识别。尝试过df['Date'] = df['Date'].dt.strftime('%Y%m%d').astype(int),但无效果。

代码片段:

import pandas as pd

df=pd.read_csv('test.csv')

df['Date'] = pd.to_datetime(df['Date'])

st.write(df['Date'].max())

解决方案

问题根源是pd.to_datetime自动解析日期时,因DD/MM/YYYY与MM/DD/YYYY格式歧义,导致年份识别错误。可通过以下方式解决:

1. 明确指定日期格式

直接通过format参数告知pandas日期的具体格式,避免自动猜测出错:

  • 若日期为日/月/年(DD/MM/YYYY):
import pandas as pd
import streamlit as st

df = pd.read_csv('test.csv')
# 明确指定格式为日/月/年
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
# 可选:打印解析结果验证正确性
print(df['Date'])
st.write(df['Date'].max())
  • 若日期为月/日/年(MM/DD/YYYY):
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')

2. 使用dayfirst=True参数

如果日期格式是日在前、月在后,可通过该参数让pandas优先解析第一部分为日期:

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

关键说明

你之前尝试的strftime转换是在日期解析错误的基础上操作的,因此无法解决问题。必须先确保pandas正确解析出datetime类型的日期,再进行后续操作。

内容的提问来源于stack exchange,提问作者Markus Fürst

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:05:54