Как обнулить временную составлющую значения колонки с датой?
Имеется колонка с датами формата: 2006-07-21 11:41:06.179131, которые нужно привести к следующему формату: 2006-07-21 00:00:00.000000
Пробовал сделать так:
df['date'] = df['date'].apply(lambda x:x.replace(hour=0,minute=0,second=0,microsecond=1))
Возвращается дата в таком формате: 2006-07-21 00:00:00.000001, если microsecond=0, тогда вообще пропадает весь хвост после 2006-07-21.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
"Хвост" не пропадает - просто Pandas не показывает компонент времени если у всех дат в столбце время нулевое (00:00:00.000000).
Пример:
In [45]: df = pd.DataFrame({"DT":["2006-07-21 11:41:06.179131", "2006-07-21 12:00:00.123456"], "VAL":[11,12]})
In [46]: df["DT"] = pd.to_datetime(df["DT"])
In [47]: df
Out[47]:
DT VAL
0 2006-07-21 11:41:06.179131 11
1 2006-07-21 12:00:00.123456 12
In [48]: df.dtypes
Out[48]:
DT datetime64[ns]
VAL int64
dtype: object
In [49]: df["DT"] = df["DT"].dt.floor("D")
In [50]: df
Out[50]:
DT VAL
0 2006-07-21 11
1 2006-07-21 12
In [51]: df.to_dict()
Out[51]:
{'DT': {0: Timestamp('2006-07-21 00:00:00'),
1: Timestamp('2006-07-21 00:00:00')},
'VAL': {0: 11, 1: 12}}
In [52]: df.dtypes
Out[52]:
DT datetime64[ns]
VAL int64
dtype: object
а теперь прибавим одну миллисекунду в последней строке:
In [54]: df.loc[1, "DT"] += pd.offsets.Milli(1)
In [55]: df
Out[55]:
DT VAL
0 2006-07-21 00:00:00.000 11
1 2006-07-21 00:00:00.001 12