Что я пытаюсь сделать, так это конвертировать мою дату в datetime64 [D].В источнике. Некоторые даты относятся к типу объектов, а некоторые - к datetime64 [нс]. Я не спрашиваю, как сделать преобразование - Я знаю это.Но что-то происходит, когда я создаю новый столбец, и следующий код, кажется, не оказывает никакого влияния, а datetime64 [ns] не меняется.
df2['date'].values.astype('datetime64[D]')
Это примерный фрейм данных:
d = {'date' :['2015-10-05 15:08:43', '2015-10-05 19:17:12', '2015-10-06 15:51:22', '2015-10-06 19:39:18', '2015-10-06 19:58:06', '2015-12-18 11:09:01'], 'name': ['john', 'tom', 'phill', 'nero', 'bob', 'rob']}
df2 = pd.DataFrame(data = d)
дата в df2 является типом объекта.Когда мы делаем следующее
df2['date'] = pd.to_datetime(df2['date'])
, дата становится dtype: datetime64 [нс].
Теперь следующий код работает и производит вывод datetime64 [D]
df2['date'].values.astype('datetime64[D]')
Нокогда я создаю новый столбец, он возвращается к
df2['date'] = df2['date'].values.astype('datetime64[D]')
Смотрите вывод здесь -
Имя: date, dtype: datetime64 [ns]
Итак, мой вопрос: почему он не работает, когда я создаю новый столбец?
Примечание: я знаю, что последняя строка выдает предупреждение.Поэтому я также попробовал метод ниже, но он не производит datetime64 [D]
newcol = df2['date'].values.astype('datetime64[D]')
df2.assign(date = newcol)