You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中将YYYYDDMM格式日期转换为YYYYMMDD格式的问题求助

问题解决方法

核心问题

你用pd.to_datetime()转换日期时没指定格式,pandas默认把20220408识别成了YYYYMMDD(2022年4月8日),但你的实际数据是YYYYDDMM(2022年8月4日),所以后续的格式转换完全没达到预期。

正确操作步骤

  • 第一步:正确解析日期格式
    转换datetime时必须指定format="%Y%d%m",明确告诉pandas原始字符串是「年-日-月」的结构:

    filtered_df['Effective Date'] = pd.to_datetime(filtered_df['Effective Date'], format="%Y%d%m")
    

    这一步会把20220408正确解析为2022年8月4日的datetime对象。

  • 第二步:转成YYYYMMDD格式字符串
    现在再用dt.strftime("%Y%m%d")就能得到你要的格式:

    filtered_df['Effective Date new'] = filtered_df['Effective Date'].dt.strftime("%Y%m%d")
    

    此时Effective Date new的值就是20220804。

  • 第三步:减去1个工作日
    用pandas的BDay偏移量来实现自动跳过周末的工作日减法:

    # 得到datetime类型的结果
    filtered_df['Effective Date minus 1 workday'] = filtered_df['Effective Date'] - pd.offsets.BDay(1)
    # 如果需要转成字符串格式,再加strftime
    filtered_df['Effective Date minus 1 workday'] = (filtered_df['Effective Date'] - pd.offsets.BDay(1)).dt.strftime("%Y%m%d")
    

完整代码示例

import pandas as pd

# 模拟你的数据
filtered_df = pd.DataFrame({'Effective Date': ['20220408']})

# 正确解析日期
filtered_df['Effective Date'] = pd.to_datetime(filtered_df['Effective Date'], format="%Y%d%m")

# 转换为YYYYMMDD格式
filtered_df['Effective Date new'] = filtered_df['Effective Date'].dt.strftime("%Y%m%d")

# 减去1个工作日并转成字符串
filtered_df['Effective Date minus 1 workday'] = (filtered_df['Effective Date'] - pd.offsets.BDay(1)).dt.strftime("%Y%m%d")

print(filtered_df)

输出结果:

Effective Date Effective Date new Effective Date minus 1 workday
0     2022-08-04           20220804                        20220803

内容的提问来源于stack exchange,提问作者Zack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:06:25