如何解决Python中datetime格式不匹配的报错问题?
修复datetime格式不匹配问题
问题根源
你的时间字符串是四位年份(如2017-01-02 13:42:05.378582),但格式符用了%y(仅匹配两位年份,比如17),导致格式不匹配报错。正确匹配四位年份的格式符是%Y(大写Y)。
修复方案1:修改strptime格式符
把格式字符串中的%y替换为%Y即可:
import datetime start_time = datetime.datetime.strptime(df['timestamp'].min(), '%Y-%m-%d %H:%M:%S.%f') end_time = datetime.datetime.strptime(df['timestamp'].max(), '%Y-%m-%d %H:%M:%S.%f') data_duration = (end_time - start_time).days print(f"Number of unique users in experiment: {df['user_id'].nunique()}")
修复方案2:使用pandas内置的时间转换(更推荐)
既然你在处理pandas DataFrame,直接用pd.to_datetime转换整列时间,操作更简洁且不易出错:
import pandas as pd # 先将timestamp列转换为datetime类型 df['timestamp'] = pd.to_datetime(df['timestamp']) # 直接取最小/最大时间计算时长 start_time = df['timestamp'].min() end_time = df['timestamp'].max() data_duration = (end_time - start_time).days print(f"Number of unique users in experiment: {df['user_id'].nunique()}")
这种方法无需手动指定格式,pandas会自动识别大部分时间格式,同时转换后的列支持直接调用min/max等方法,代码更简洁高效。
内容的提问来源于stack exchange,提问作者Ahmed Al Mubarak
相关产品推荐
相关产品推荐

