Я написал следующий фрагмент кода, который присваивает кортежи сегментам.Сегмент - это контейнер кортежей, охватывающий определенный интервал времени.В отличие от кортежа, который имеет только 1 метку времени.
Однако, поскольку мой код содержит ~ 30 000 кортежей, и этот шаг повторяется довольно часто, он тратит много времени на этот метод.
Есть ли более эффективный способ справиться с этим?
for timestamp, tuple in tuples.iterrows():
this_seg = [s for s in segments if s.can_have(timestamp)]
assert(len(this_seg) <= 1)
for s in this_seg:
s.append(tuple)
return segments
Вот еще один контекст:
A сегмент является классом типа Segment и имеет конструктор следующим образом:
def __init__(self, ts_max, ts_min):
self._df = pd.DataFrame({})
self._ts_max = ts_max
self._ts_min = ts_min
Метод can_have проверяет, может ли данная временная метка быть частью сегмента: т.е. временная метка лежит между ts_min и ts_max.
Tuples - это фрейм данных Pandas, который имеет временные метки в качестве индексов инекоторые другие функции в виде столбцов.