В одном столбце есть даты, но в другом есть строка, содержащая дату, поэтому сначала мне нужно извлечь часть даты из этой строки.
import pandas as pd
import datetime
from dateutil.relativedelta import relativedelta
# the dataframe - id column always starts with year, month and day
df = pd.DataFrame({'id': ['19520630F8', '19680321A5', '19711113E2'],
'dte': ['2010-06-02', '2007-08-12', '2013-01-23']})
# create a date string from df['id'] to the format yyyy-mm-dd
dob = (df['id'].str[:4] + '-' +
df['id'].str[4:6] + '-' +
df['id'].str[6:8])
# calculate age (years only) at df['dte']
df['age'] = relativedelta(date, dob).years
Я получаю сообщение об ошибке:
ValueError: Значение истинности Серии неоднозначно.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().
Я не понимаю двусмысленности моих данных, игде применять эти пустые / bool / item ... Столбец df['dta']
, если тип данных объекта, а не дата и время, но перенос создания dob в pd.to_datetime
не поможет.
EDIT Ожидаемый результат долженбыть
dte id age
0 2010-06-02 19520630F8 57
1 2007-08-12 19680321A5 39
2 2013-01-23 19711113E2 41