Здесь есть серьезная проблема: когда вы делаете минус dftopyear ['date_start'], это делает минус против всего DataFrame.
Вам нужен указатель индекса для указания на одно значение, а не на целую серию:
dftopyear['duration'] = ''
for i,x in enumerate(dftopyear.Date_resil):
if pd.isnull(x):
dftopyear.iloc[i, 'duration'] = dt.datetime.today().strftime("%Y-%m-%d") - dftopyear.iloc[i, 'date_start']
else:
dftopyear.iloc[i, 'duration'] = dftopyear.iloc[i, 'Date_end'] - dftopyear.iloc[i, 'date_start']
или более pythoni c way:
dftopyear['duration'] = ''
for i,x in enumerate(dftopyear.Date_resil):
end_day = dt.datetime.today().strftime("%Y-%m-%d") if pd.isnull(x) else dftopyear.iloc[i, 'Date_end']
dftopyear.iloc[i, 'duration'] = end_day - dftopyear.iloc[i, 'date_start']