The code:
import pandas as pd import datetime as dt d1 = pd.to_datetime(df.dates, errors='coerce') d1 = pd.to_timedelta(d1).dt.days
i have lots of dates in a column which i want to convert to number of days but i simply keep getting errors. im new to pandas so sorry if the question is silly
2014-07-29 2008-11-14 2010-04-20 2011-08-31 2002-07-29 2013-10-29
but why am i getting errors and how to fix them.
TypeError                                 Traceback (most recent call last)
<ipython-input-119-298bf748984e> in <module>()
      1 d1 = pd.to_datetime(df.dates, errors='coerce')
----> 2 d1 = pd.to_timedelta(d1).dt.days
2 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/tools/timedeltas.py in to_timedelta(arg, unit, errors)
    122         return arg
    123     elif isinstance(arg, ABCSeries):
--> 124         values = _convert_listlike(arg._values, unit=unit, errors=errors)
    125         return arg._constructor(values, index=arg.index, name=arg.name)
    126     elif isinstance(arg, ABCIndex):
/usr/local/lib/python3.7/dist-packages/pandas/core/tools/timedeltas.py in _convert_listlike(arg, unit, errors, name)
    171 
    172     try:
--> 173         td64arr = sequence_to_td64ns(arg, unit=unit, errors=errors, copy=False)[0]
    174     except ValueError:
    175         if errors == "ignore":
/usr/local/lib/python3.7/dist-packages/pandas/core/arrays/timedeltas.py in sequence_to_td64ns(data, copy, unit, errors)
   1018     else:
   1019         # This includes datetime64-dtype, see GH#23539, GH#29794
-> 1020         raise TypeError(f"dtype {data.dtype} cannot be converted to timedelta64[ns]")
   1021 
   1022     data = np.array(data, copy=copy)
TypeError: dtype datetime64[ns] cannot be converted to timedelta64[ns]
Thank you
Advertisement
Answer
To get the number of days to now, use:
today = pd.Timestamp.today().normalize() d1 = (today - pd.to_datetime(df['dates'], errors='coerce')).dt.days print(d1) # Output 0 2910 1 4993 2 4471 3 3973 4 7293 5 3183 Name: dates, dtype: int64