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

Python中Pandas转换日期字符串出现每月格式不一致的技术问题咨询

解决Google Drive导入CSV后日期解析格式不一致的问题

这个问题我之前也碰到过,核心原因是pandas自动解析日期时的格式歧义:你的原始日期字符串是DD-MM-YY格式,但pd.to_datetime()在遇到类似01-01-22这种没有明确指向的日期时,会默认按美式的MM-DD-YY去解析;而当遇到13-01-22这种日期(13不可能是月份),它只能被迫按DD-MM-YY解析,这就导致前12行日期格式混乱,和后面的行解析结果不一致。

解决方案:明确指定日期格式

不要让pandas猜格式,直接告诉它你的原始日期是日-月-年的格式,修改代码中日期转换的那一行即可:

# 替换原来的自动解析代码
df1['Date'] = pd.to_datetime(df1['Date'], format='%d-%m-%y')

修改后的完整代码片段

from google.colab import auth
auth.authenticate_user()
import gspread
from google.auth import default
creds, _ = default()
gc = gspread.authorize(creds)
worksheet = gc.open('Sale_Data_WC_2022').sheet1
# get_all_values gives a list of rows.
rows = worksheet.get_all_values()
print(rows)
# Convert to a DataFrame and render.
import pandas as pd
df = pd.DataFrame.from_records(rows)
df1 = df.iloc[:,[1,2,5,6,7,8,9]]
df1 = df1.rename(columns={df1.columns[0]: 'Date'})
# 关键修改:指定日期格式为DD-MM-YY
df1['Date'] = pd.to_datetime(df1['Date'], format='%d-%m-%y')
df1

为什么这么做?

  • format='%d-%m-%y'强制pandas按照日-月-两位年份的规则解析所有日期字符串,彻底避免自动猜测带来的歧义。
  • 如果你的数据里存在混合格式的日期,也可以尝试用dayfirst=True参数,但指定明确的format是最可靠的方式——因为dayfirst在遇到歧义日期时还是会优先按美式格式解析。

修改后,所有日期都会被统一解析为标准的yyyy-mm-dd datetime格式,之后你筛选特定月份的操作就不会再出现格式异常的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:22:30