为何pandas的to_csv方法中date_format参数无法格式化日期?
问题
调用pandas.DataFrame.to_csv()方法时,指定date_format="%Y %b"参数后,日期未按预期的“年份 月份缩写”格式输出。
执行代码:
import pandas as pd import datetime pd.DataFrame([datetime.datetime.now().date()]).to_csv(date_format="%Y %b")
得到输出:
',0\n0,2025-07-31\n'
原因
to_csv的date_format参数仅对pandas Datetime类型的列生效。你传入的是datetime.date对象,pandas会将其识别为object类型,因此该格式化参数不会被触发。
解决方法
将列转换为pandas Datetime类型,有两种常见方式:
方式1:创建DataFrame后,用
pd.to_datetime()转换列类型import pandas as pd import datetime df = pd.DataFrame([datetime.datetime.now().date()]) # 转换为Datetime类型 df[0] = pd.to_datetime(df[0]) # 输出时指定date_format df.to_csv(date_format="%Y %b", index=False)方式2:直接使用
datetime.datetime对象创建DataFrame(默认会被识别为Datetime类型)import pandas as pd import datetime df = pd.DataFrame([datetime.datetime.now()]) df.to_csv(date_format="%Y %b", index=False)
执行修正后的代码,输出会变为:
0 2025 Jul
内容的提问来源于stack exchange,提问作者Hugo Trentesaux
相关产品推荐
相关产品推荐

