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