酒肉馋师 2021-12-12 12:09 采纳率: 0%
浏览 64

Pandas 读取 Excel数字形式的日期,如何转换成pandas的时间戳?

问题:pandas读取Excel文件,日期成了数字,需要转换成pandas的时间戳。

解决方案,做了一个自定义函数来转换,如下:

def date_tran(date_n):  # Excel数字日期转 pandas 的 datetime
    if type(date_n) == int:
        delta_d = pd.Timedelta(str(int(date_n)) + 'days')
        date_d = pd.to_datetime('1899-12-30') + delta_d
        return date_d
    elif type(date_n) == float:
        delta_df = pd.Timedelta(str(float(date_n)) + 'days')
        date_dt = pd.to_datetime('1899-12-30 00:00:00') + delta_df
        return date_dt
    else:
        return date_n


df['日期'] = df['日期'].apply(date_tran)

关于在自定义函数里头,初始时间设定为1899-12-30的原因,和Excel的一个bug有关。

在Excel中,数字0,对应的是1900年1月0日,这是一个无效的日期,数字60对应的是1900年2月29日,而实际上,1900年不是闰年,没有2月29日,也是无效的日期。

在pandas中,将初始时间设置成1899-12-30,Excel的日期在1900年3月1日开始,才没有问题。

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2021-12-12 12:21
    关注

    不错不错, 采纳了去发篇博文吧。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月12日

悬赏问题

  • ¥30 计算机硬件实验报告寻代
  • ¥15 51单片机写代码,要求是图片上的要求,请大家积极参与,设计一个时钟,时间从12:00开始计时,液晶屏第一行显示time,第二行显示时间
  • ¥15 用C语言判断命题逻辑关系
  • ¥15 原子操作+O3编译,程序挂住
  • ¥15 使用STM32F103C6微控制器设计两个从0到F计数的一位数计数器(数字),同时,有一个控制按钮,可以选择哪个计数器工作:需要两个七段显示器和一个按钮。
  • ¥15 在yolo1到yolo11网络模型中,具体有哪些模型可以用作图像分类?
  • ¥15 AD9910输出波形向上偏移,波谷不为0V
  • ¥15 淘宝自动下单XPath自动点击插件无法点击特定<span>元素,如何解决?
  • ¥15 曙光1620-g30服务器安装硬盘后 看不到硬盘
  • ¥15 抖音直播广场scheme