如何将Pandas Series中的datetime日期格式改为YYYYMMDD?
问题:修改Pandas Series日期输出格式
需求
将Pandas Series中的日期输出从YYYY-MM-DD格式改为YYYYMMDD格式,示例如下:
原输出
listOfDates = df2['TradeDate'].drop_duplicates().reset_index(drop=True) print(listOfDates) 0 2022-02-02 1 2022-02-08 2 2022-05-01 3 2022-05-06 4 2022-06-05 5 2022-06-17 6 2022-07-30 7 2022-08-03 8 2022-10-10 9 2022-11-18 Name: TradeDate, dtype: datetime64[ns]
期望输出
listOfDates = df2['TradeDate'].drop_duplicates().reset_index(drop=True) print(listOfDates) 0 20220202 1 20220208 2 20220501 3 20220506 4 20220605 5 20220617 6 20220730 7 20220803 8 20221010 9 20221118 Name: TradeDate, dtype: datetime64[ns]
尝试过的错误代码
直接调用strftime报错,提示Pandas Series无该属性:
listOfDates = df2['TradeDate'].drop_duplicates().reset_index(drop=True).strftime("%Y%m%d")
解决方法
方法1:仅修改显示格式(保留datetime类型)
如果只需打印时显示为无横杠格式,且保留日期类型用于后续运算,可设置Pandas全局日期显示格式:
import pandas as pd # 设置全局日期显示格式 pd.options.display.date_format = '%Y%m%d' listOfDates = df2['TradeDate'].drop_duplicates().reset_index(drop=True) print(listOfDates)
执行后输出会变为期望的YYYYMMDD格式,且Series的dtype仍为datetime64[ns]。
方法2:转换为字符串类型(改变数据类型)
若需要将日期转为字符串存储,使用dt访问器调用strftime(针对datetime类型Series的专属访问器):
listOfDates = df2['TradeDate'].drop_duplicates().reset_index(drop=True).dt.strftime("%Y%m%d") print(listOfDates)
此时Series的dtype会变为object(字符串类型)。
内容的提问来源于stack exchange,提问作者K.Best
相关产品推荐
相关产品推荐

