Не столько вопрос, но что-то меня озадачивает.
У меня есть столбец дат, который выглядит примерно так:
0 NaT
1 1996-04-01
2 2000-03-01
3 NaT
4 NaT
5 NaT
6 NaT
7 NaT
8 NaT
Я бы хотел преобразовать его в NaTстатическое значение.(Предположим, я импортировал панд как pd и numpy как np).
Если я сделаю:
mydata['mynewdate'] = mydata.mydate.replace(
np.NaN, pd.datetime(1994,6,30,0,0))
Все хорошо, я получу:
0 1994-06-30
1 1996-04-01
2 2000-03-01
3 1994-06-30
4 1994-06-30
5 1994-06-30
6 1994-06-30
7 1994-06-30
8 1994-06-30
Но еслиЯ делаю:
mydata['mynewdate'] = np.where(
mydata['mydate'].isnull(), pd.datetime(1994,6,30,0,0),mydata['mydate'])
Я получаю:
0 1994-06-30 00:00:00
1 828316800000000000
2 951868800000000000
3 1994-06-30 00:00:00
4 1994-06-30 00:00:00
5 1994-06-30 00:00:00
6 1994-06-30 00:00:00
7 1994-06-30 00:00:00
8 1994-06-30 00:00:00
Эта операция преобразует исходные ненулевые даты в целые числа.Я подумал, что могут быть перепутаны типы данных, поэтому я сделал это:
mydata['mynewdate'] = np.where(
mydata['mydate'].isnull(), pd.datetime(1994,6,30,0,0),pd.to_datetime(mydata['mydate']))
И все равно получаю:
0 1994-06-30 00:00:00
1 828316800000000000
2 951868800000000000
3 1994-06-30 00:00:00
4 1994-06-30 00:00:00
5 1994-06-30 00:00:00
6 1994-06-30 00:00:00
7 1994-06-30 00:00:00
8 1994-06-30 00:00:00
Пожалуйста, обратите внимание (и не спрашивайте):Да, у меня есть лучшее решение для замены нулей.Этот вопрос не о замене пустых значений (поскольку заголовок указывает, что это не так), а о том, насколько непонятным является обработка дат.Я спрашиваю, потому что у меня будут более сложные условия для выбора дат для замены в будущем, и я подумал, где будет делать эту работу.
Есть идеи?