python находит время между столбцом даты в датафрейме и контрольной датой - PullRequest
0 голосов
/ 05 октября 2018

У меня есть фрейм данных df со столбцом 'date of birth', головка которого выглядит как выглядит:

            DoB
0    19/12/1973
1    22/05/1969
2    23/09/1959
3    04/08/1963
4    25/03/1962

Я пытаюсь создать новый столбец с номеромлет между этим столбцом и справочной переменной с именем refDate, которая имеет значение: 2017-03-31 и имеет тип <class 'datetime.date'>.Я ищу следующий столбец в df dataframe

Age
43
47
57
53
55

Я попробовал следующий:

df['Age'] = df.loc[(refDate - ['Date of birth']).years]

, но не могу получить новый столбец с именем Age.Может кто-нибудь сообщить мне, где я ошибся, пожалуйста.

Спасибо

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Неверная строка для df['Age']. Используйте следующее, чтобы получить желаемый результат: сначала вычтите df['DoB'] из refDate, затем разделите на timedelta для преобразования дней в годы как:

df['DoB'] = pd.to_datetime(df['DoB'])
df['Age'] = (pd.to_datetime('2017-03-31') - df['DoB'])/np.timedelta64(1, 'Y')

print(df)
         DoB        Age
0 1973-12-19  43.280834
1 1969-05-22  47.858614
2 1959-09-23  57.520688
3 1963-04-08  53.980575
4 1962-03-25  55.018241

Или Если вы хотите, чтобы годы были целыми числами, то:

df['Age'] = ((pd.to_datetime('2017-03-31') - df['DoB'])/np.timedelta64(1, 'Y')).astype(int)
print(df)
         DoB  Age
0 1973-12-19   43
1 1969-05-22   47
2 1959-09-23   57
3 1963-04-08   53
4 1962-03-25   55
0 голосов
/ 05 октября 2018

Используется для получения различий дат в годах

df.DoB.apply(lambda x: (refDate - x).days // 365)

Демо

In [1]: df.DoB = pd.to_datetime(df.DoB)

In [2]: refDate = datetime(2017, 3, 31)

In [3]: df['age'] = df.DoB.apply(lambda  x: (refDate - x).days // 365)

In [4]: df
Out[4]:
         DoB  age
0 1973-12-19   43
1 1969-05-22   47
2 1959-09-23   57
3 1963-04-08   54
4 1962-03-25   55
0 голосов
/ 05 октября 2018

Не использовать .loc.loc вы получаете доступ к группе строк и столбцов по меткам или логическому массиву.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...