pandas日期序列strftime格式化输出重复值问题排查
问题根因
格式化日期时用错了strftime的格式符:
- 你代码里写的
%m代表补零格式的数字月份,根本不是日期字段。所以所有5月的日期格式化后,第二个字段固定是05,所有6月的日期第二个字段固定是06,和你贴出来的异常输出完全匹配。 - 你要实现「月份全称 日期,年份」的格式,代表当月日期的格式符是
%d,不是%m。
修复代码
把格式化字符串里的%m替换成%d即可,修正后的可运行代码:
from datetime import datetime import pandas as pd START_REPORTING = datetime(2022, 5, 15) TODAY = datetime.today() dates = pd.date_range(start=START_REPORTING, end=TODAY) date_list = [] for i in dates: date_list.append(i.strftime('%B %d,%Y')) print(date_list) print(dates)
额外提醒:不要用
list当变量名,这是Python内置的列表类名,直接覆盖会导致后续调用列表相关方法时出现莫名其妙的报错。
常用格式符参考
%B:完整月份名称(本地化输出,比如May、June)%m:补零格式的数字月份,取值范围01-12%d:补零格式的当月日期,取值范围01-31%Y:4位数字的年份
内容的提问来源于stack exchange,提问作者pkpto39
相关产品推荐
相关产品推荐

