我有以下格式的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)
。
答案 0 :(得分:7)
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_pydatetime
,可以将pandas.Timestamp
变成datetime
对象({{3} })。在您的代码中,将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()
。这将为您提供精确的时差,而不仅仅是天数。