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
相关产品推荐
相关产品推荐

