Search code examples
python-3.xpandaspython-dateutil

TypeError passing Series with dtype int to dateutil.relativedelta


I'm trying to use dateutil.relativedelta.relativedelta to add an int type pandas Series to a datetime Series.

df.loc[:,'calc_eli_date'] = (
    datetime.datetime(df['pol_eff_date'])
    + relativedelta(years=df['frt_elig_year'])
)

df['pol_eff_date'] is datetime64[ns] type

df['frt_elig_year'] is int

But I get the following error:

TypeError: cannot convert the series to class 'int' 

Solution

  • The dateutil.relativedata.relativedata constructor only accepts datetime and integer arguments - not arrays or pandas objects.

    Try pd.to_timedelta instead:

    df['calc_eli_date'] = (
        df['pol_eff_date'] + pd.to_timedelta(df['frt_elig_year'], unit='Y')
    )