2017-02-17 3 views
1

У меня есть dataframe, как показано ниже:Как правильно использовать fillna() для столбца datetime в pandas dataframe (не работает)?

 Age CreatedDate TestDate    Performance 
544 51 2015-11-23 2015-12-11     1 
325 51 2015-11-23 2016-01-04     0 
1043 51 2016-01-26 2016-01-25     1 
303 51 2016-01-26 2016-02-15     1 
1076 50 2015-04-29   NaT     0 

Я хочу, чтобы обновить свой TestDate, который имеет значение Ната с данными Дата создания, как таковой:

 Age CreatedDate TestDate    Performance 
544 51 2015-11-23 2015-12-11     1 
325 51 2015-11-23 2016-01-04     0 
1043 51 2016-01-26 2016-01-25     1 
303 51 2016-01-26 2016-02-15     1 
1076 50 2015-04-29 2015-04-29     0 

Я пытался используйте метод fillna(), однако мои данные не обновляются, хотя ошибка не испускается.

df['TestDate'].fillna(pd.to_datetime(df['CreatedDate'])) 

Любой совет? Спасибо.

ответ

1

Вы должны конвертировать ваши даты-времени столбцы TestDate и CreatedDate в формат datetime перед заполнением NaT:

df['TestDate'] = pd.to_datetime(df['TestDate']) 

df['CreatedDate'] = pd.to_datetime(df['CreatedDate']) 

то не забудьте добавить inplace=True к выписке:

In [20]: df['TestDate'].fillna(df['CreatedDate'], inplace=True) 

In [21]: df 
Out[21]: 
     Age CreatedDate TestDate Performance 
544 51 2015-11-23 2015-12-11   1 
325 51 2015-11-23 2016-01-04   0 
1043 51 2016-01-26 2016-01-25   1 
303 51 2016-01-26 2016-02-15   1 
1076 50 2015-04-29 2015-04-29   0 

Проверка dtypes:

In [22]: df.dtypes 
Out[22]: 
Age      int64 
CreatedDate datetime64[ns] 
TestDate  datetime64[ns] 
Performance    int64 
dtype: object 
Смежные вопросы