Python中如何将5位int64类型数字转换为正确日期格式?
解决Excel日期序列号转常规日期格式的问题
你的5位数字是Excel的日期序列号,错误原因是你用了Unix时间戳的起始点(1970-01-01)来计算,而Excel的日期序列号起始基准是1899年12月30日(对应序列号1为1900-01-01,这是Excel历史遗留的bug导致的),换起始基准就能得到正确日期。
方法一:用Pandas内置函数(推荐)
Pandas直接支持将Excel序列号转换为日期,代码更简洁高效:
import pandas as pd # 转换为datetime类型 df['Date'] = pd.to_datetime(df['Date'], unit='D', origin='1899-12-30') # 格式化为你需要的"月/日/年"形式 df['Date'] = df['Date'].dt.strftime("%m/%d/%Y")
方法二:手动用datetime计算
如果不想用Pandas的内置方法,也可以手动修改起始日期:
from datetime import datetime, timedelta df['Date'] = df['Date'].apply(lambda x: (datetime(1899, 12, 30) + timedelta(days=int(x))).strftime("%m/%d/%Y"))
验证:输入44562时,两种方法都会得到01/01/2022,符合预期。
内容的提问来源于stack exchange,提问作者Thet Paing Hmoo
相关产品推荐
相关产品推荐

