У меня есть 2 столбца в наборе данных из 327 записей:
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 JD 327 non-null datetime64[ns]
1 CD 312 non-null Int64
И я хочу создать третий (['theoretical_eoc']
), который дает мне даты, хранящиеся в [JD]
плюс число месяцы, указанные в [CD]
. Но когда я определяю этот новый столбец с помощью:
df['theoretical_eoc'] = turnover.apply(lambda x: x.JD + relativedelta(months=x.CD), axis=1)
, я получаю следующее сообщение об ошибке:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NAType'
Итак, я определил функцию, чтобы поставить NaT
в случае, если один из значения в любом из столбцов - это NA:
def rd_na(a, b):
if pd.isnull(a) or pd.isnull(b):
pd.NaT
else:
a + relativedelta(months = b)
Но когда я его применяю:
df['theoretical_eoc'] = turnover.apply(lambda x: rd_na(x.JD, x.CD), axis=1)
Результатом является столбец, полный None
значений, когда я ожидал datetime64[ns]
с некоторыми NaT
. Что я делаю неправильно? Как я мог выполнить sh эту задачу?