使用Pandas处理Excel日期列:提取年份分组遇格式匹配错误求解
问题修复方案
错误原因
你写的format='%y/%m/%d %I:%M%p'和实际数据完全不匹配:
%y是两位年份格式,但你的数据是四位年份(比如2022),得用%Y- 你的数据只有日期(年/月/日),没有时分秒和AM/PM标识,格式串里的
%I:%M%p完全多余,导致匹配失败
修复后的代码
方式1:不修改索引,直接提取年份分组
这种方式更直观,也方便后续查看年份列:
# 先把日期列转成datetime类型,提取年份到新列 df['年份'] = pd.to_datetime(df[18], format='%Y/%m/%d').dt.year # 按年份分组 grouped_df = df.groupby('年份')
方式2:将日期设为索引后分组
如果一定要用索引分组,修正format参数即可:
# 修正format为匹配数据的格式:四位年/两位月/两位日 df.index = pd.to_datetime(df[18], format='%Y/%m/%d') # 按索引的年份分组 grouped_df = df.groupby(by=[df.index.year])
额外提示
如果你的日期列里有部分数据格式不统一,还可以加上errors='coerce'参数,把无法转换的日期设为NaT,避免程序崩溃:
df['年份'] = pd.to_datetime(df[18], format='%Y/%m/%d', errors='coerce').dt.year
内容的提问来源于stack exchange,提问作者Ashti Nematian
相关产品推荐
相关产品推荐

