【问题标题】:TypeError: an integer is required (got type Timestamp)TypeError:需要一个整数(获取类型时间戳)
【发布时间】:2020-06-20 12:19:33
【问题描述】:

我有一个格式如下的 Excel 表格:

我想通过 Python 使用 pandas 模块读取此表,并计算发布日期与当前日期之间的差异。这是我当前的代码:

    import pandas as pd
    import datetime as dt
    def abc():
        a=pd.read_excel('date time.xlsx')
        b=dt.date.today()
        print(b)
        c=(a['date of issue'])
        h=(c[0])
        f=dt.datetime(h)
        d=b-f
        print(d)
   abc()

它在第 7 行 (f=dt.datetime(h)) 中显示错误。它读作TypeError: an integer is required (got type Timestamp)

【问题讨论】:

    标签: python python-3.x pandas python-datetime


    【解决方案1】:

    datetime 模块是 Python 标准库的一部分。 datetime.datetime 类的构造函数将特定的年、月和日作为参数 (Reference)。你会调用它,例如与datetime.datetime(2020, 3, 8)

    在您的代码中,您通过pandas 库从 Excel 表中查询特定单元格。这个单元格恰好包含一个日期,pandas 检测到该日期并转换为一个pandas.Timestamp 对象。 pandas 库不是 Python 标准库的一部分,因此 Python 的 datetime 类不知道 pandas.Timestamp。当您将pandas.Timestamp 传递给datetime 构造函数时,您会收到错误消息TypeError: an integer is required (got type Timestamp)。这意味着datetime 需要一个整数(指定年份),但收到了一个pandas.Timestamp,它不理解。

    但是,pandas 确实知道 datetime,并为您提供了一个帮助函数 to_pydatetimepandas.Timestamp 转换为 datetime 对象 (reference)。在您的代码中,将f 的赋值替换为:

        f=h.to_pydatetime().date()
    

    to_pydatetime() 给你一个datetime.datetime 对象,然后.date() 把它变成一个datetime.date 对象,这是下一行中d=b-f 所必需的,因为你分配了b datetime.date.today()

    或者,您也可以将b 的声明更改为b=dt.datetime.now(),然后将f 的赋值更改为f=h.to_pydatetime()。这将为您提供精确的时差,而不仅仅是天数的差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      相关资源
      最近更新 更多