Разница между двумя столбцами даты, если и только значения присутствуют в обоих столбцах - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть две колонки с датами. ПЕРВИЧНЫЙ РЕБЕНО, разность 05-19-1945 01-13-1994, некоторые значения в годах 03-01-1963
05-33-1933 03-01-1955, некоторые значения в годах 05-19 -1944 06-11-1967 какое-то значение в годах 04-22-2020

Я хочу показать разницу в годах, если и только если значение присутствует в обоих столбцах (driver_data_new ['ASGN_BRTH_DT_PRIMARY'] - driver_data_new [ 'ASGN_BRTH_DT_CHILD']) / np.timedelta64 (1, 'Y') получает следующую ошибку ---> 36 driver_data_new ['ASGN_BRTH_DT_PRIMARY']. N_range '] = (driver_data_new [' ASGN_BRTH_DT_PRIMARY '] - driver_data_new [' ASGN_BRTH_DT_CHILD ']) / np.timedelta64 (1,' Y ')

AttributeError: может использовать только значения типа date6 * * типа 100: *.

1 Ответ

0 голосов
/ 13 апреля 2020

Ваша ошибка AttributeError: Can only use .dt accessor with datetimelike values не имеет ничего общего только с вычитанием дат, когда оба значения доступны. Скорее, это связано с типами данных в столбцах, которые вы используете. По крайней мере, один из них не является объектом типа datetime, поэтому средство доступа .dt просто недоступно. Используйте df.dtypes, чтобы увидеть, какие столбцы не являются датой и временем, и pandas.to_datetime, чтобы преобразовать. Как только вы это сделаете, вы увидите, как разница, которую вы пытаетесь вычислить, уже обработана:

>>> df = pd.DataFrame({'a_dt': pd.to_datetime([np.nan, '2019-01-01', '2020-02-04']), 'b_dt': pd.to_datetime([np.nan, np.nan, '2020-03-17'])})
>>> df
        a_dt       b_dt
0        NaT        NaT
1 2019-01-01        NaT
2 2020-02-04 2020-03-17
# Both are datetime types
>>> df.dtypes
a_dt    datetime64[ns]
b_dt    datetime64[ns]
dtype: object
>>> df['b_dt'] - df['a_dt']
0       NaT
1       NaT
2   42 days
dtype: timedelta64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...