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

将整数格式日期转换为对应月份最后一个工作日日期

实现将整数日期转换为当月最后一个工作日的方法

当然可以实现这个需求!借助Python的pandas库,我们可以轻松完成整数日期格式转换、获取当月最后一个工作日的操作,下面是具体的实现步骤和代码:

步骤说明

  • 转换整数日期为日期格式:首先把Date列的整数(如200801)转换成pandas可识别的日期类型,这里指定格式为%Y%m(年+月),转换后会默认当月第一天(比如200801变成2008-01-01)。
  • 获取当月最后一个工作日:使用pandas的BMonthEnd(Business Month End)偏移量,它会自动计算每个日期所在月份的最后一个工作日(跳过周末和默认的法定节假日)。
  • 格式化输出日期:把计算得到的最后一个工作日格式化为YYYY-MM-DD的字符串,存入新列Date2。

完整代码示例

import pandas as pd
from pandas.tseries.offsets import BMonthEnd

# 构造输入的DataFrame
Input_DF = pd.DataFrame({
    'Product': ['A', 'C', 'B', 'B', 'C', 'A'],
    'Date': [200801, 201503, 201002, 201704, 200605, 200805],
    'Country': ['USA', 'AUS', 'UK', 'FIN', 'IRE', 'CAN']
})

# 步骤1:转换整数日期为日期类型
Input_DF['date_temp'] = pd.to_datetime(Input_DF['Date'], format='%Y%m')

# 步骤2:计算当月最后一个工作日
Input_DF['Date2'] = Input_DF['date_temp'] + BMonthEnd(0)

# 步骤3:格式化为指定的字符串格式(可选,若要保留datetime类型可省略此步)
Input_DF['Date2'] = Input_DF['Date2'].dt.strftime('%Y-%m-%d')

# 移除临时列,得到最终结果
Output_DF = Input_DF.drop('date_temp', axis=1)

print(Output_DF)

运行结果

Product    Date Country       Date2
0       A  200801     USA  2008-01-31
1       C  201503     AUS  2015-03-31
2       B  201002      UK  2010-02-26
3       B  201704     FIN  2017-04-28
4       C  200605     IRE  2006-05-31
5       A  200805     CAN  2008-05-30

补充说明

  • 如果需要适配特定国家的节假日,可以自定义BMonthEnd的节假日日历,比如使用pandas.tseries.holiday模块来指定对应国家的节假日规则。
  • 如果希望Date2保留datetime类型而非字符串,可以去掉dt.strftime('%Y-%m-%d')这一步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:55:12