I have an Excel table in the following format:
I want to read this table with Python using the pandas
modules and calculate the difference between an issue date and the current date. This is my current code:
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()
It is showing an error in line 7 (f=dt.datetime(h)
). It reads TypeError: an integer is required (got type Timestamp)
.
The datetime
module is part of the Python standard library. The constructor of the datetime.datetime
class takes a specific year, month and day as parameter (Reference). You would invoke it e.g. with datetime.datetime(2020, 3, 8)
.
In your code you are querying a specific cell from a an Excel table via the pandas
library. This cell happens to contain a date, which pandas
detects and turns into a pandas.Timestamp
object. The pandas
library is not part of the Python standard library, for this reason Python's datetime
class does not know about pandas.Timestamp
. When you pass a pandas.Timestamp
to the datetime
constructor, you get the error message TypeError: an integer is required (got type Timestamp)
. This means datetime
expected an integer (specifying the year), but received a pandas.Timestamp
, which it does not understand.
However, pandas
does know about datetime
and offers you a helper function to_pydatetime
to turn a pandas.Timestamp
into a datetime
object (reference). In your code, replace the assignment for f
with:
f=h.to_pydatetime().date()
The to_pydatetime()
gives you a datetime.datetime
object, and then the .date()
turns it into a datetime.date
object, which is required for the d=b-f
in the next line, as you assigned b
with datetime.date.today()
.
Alternatively, you could also change the declaration of b
to b=dt.datetime.now()
and then the assignment of f
to f=h.to_pydatetime()
. This would give you the precise time difference, not just the difference in days.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With