Как я могу создать столбец, который помечает, когда другой столбец даты и времени изменил дату?

#python-3.x #pandas #numpy

#python-3.x #панды #numpy

Вопрос:

Как я могу создать маркер столбца, который помечает (0 или 1), когда другой столбец даты и времени «DT» изменил дату?

 df = pd.DataFrame()
df['Obs']=float_array
df['DT'] = pd.to_datetime(datetime_array)
df['Marker'] = 0
print(type(df['DT'].dt))
 

<класс ‘pandas.core.indexes.accessors.DatetimeProperties’>

 df['Marker'] = df.where(datetime.date(df.DT.dt) == datetime.date(df.DT.shift(1).dt),1)
 

Ошибка типа: требуется целое число (есть свойства типа DatetimeProperties)

Комментарии:

1. Возможно ли добавить некоторые образцы данных, 2-3 строки с ожидаемым результатом?

Ответ №1:

Используется Series.dt.date для преобразования в даты и для преобразования True/False 1/0 в Series.view :

 df['Marker'] = (df.DT.dt.date == df.DT.dt.date.shift()).view('i1')
 

Или numpy.where :

 df['Marker'] = np.where(df.DT.dt.date == df.DT.dt.date.shift(), 0, 1)