Pandas:如何将两种不同格式的日期转换为统一格式?
解决DataFrame日期格式统一问题
问题分析
你之前的代码报错是因为指定的格式%d-%m是横杠分隔,但实际日期是点分隔的,且存在带年份的格式,导致匹配失败。下面提供两种简单的解决方法,都能帮你统一成日.月.格式:
方法一:直接字符串截取(高效简洁)
两种目标格式的前5位正好是你需要的dd.mm.,直接截取字符串前5个字符即可:
df["date"] = df["date"].str[:5]
注:该方法适用于所有日期字符串都严格符合dd.mm.或dd.mm.yyyy结构的情况
方法二:转成datetime后格式化(更严谨)
先将所有日期转成datetime类型(pandas会自动识别两种点分隔的格式),再提取日和月重新格式化:
# 转换为datetime类型,指定dayfirst=True确保日在前月在后 df["date"] = pd.to_datetime(df["date"], dayfirst=True) # 格式化为你需要的日.月.格式 df["date"] = df["date"].dt.strftime("%d.%m.")
这种方法能自动处理一些格式异常(比如个别不符合的日期会被转为NaT,你可以后续用df.dropna()处理),更适合数据可能存在小异常的场景。
内容的提问来源于stack exchange,提问作者codeinecoder
相关产品推荐
相关产品推荐

