#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)