У меня есть фрейм данных о событии, столбцом которого является интервал времени, в который это событие произошло. Я хотел бы использовать pd.qcut()
, чтобы сделать процентили каждого интервала с учетом событий, которые в нем находятся, и дать каждому событию соответствующий процентиль.
def event_quartiler(event_row):
in_interval = paired_events.loc[events['TimeInterval'] == event_row['TimeInterval']]
quartiles = pd.qcut(in_interval['DateTime'], 100)
counter = 1
for quartile in quartiles.unique():
if(event_row['DateTime'] in quartile):
return counter
counter = counter+1
if(counter > 100): break
return -1
events['Quartile'] = events.apply(event_quartiler, axis=1)
Я ожидал, что это просто установит в столбце Quartile соответствующий процентиль каждого события, но вместо этого код будет работать вечно и эффективно сдувается, выводя следующее:
ValueError: ("Bin edges must be unique: array([1.55016605e+18, 1.55016616e+18, 1.55016627e+18, 1.55016632e+18,\n 1.55016632e+18, 1.55016636e+18,
... (I put the ellipsis here because there are 100 data points)
1.55017534e+18, 1.55017545e+18,\n 1.55017555e+18]).\nYou can drop duplicate edges by setting the 'duplicates' kwarg", 'occurred at index 6539')
Нет ничего особенного в данных на 6539 или любых событиях в их интервале, но я не могу найти, где я ошибаюсь с кодом.