我编写了以下代码,将元组分配给段。段是元组的容器,跨一定的时间间隔。与只有1个时间戳的元组相反。
但是,由于我的代码有〜30000个元组,并且此步骤经常重复,因此在此方法上花费了大量时间。
有没有更有效的方法来处理此问题?
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
这里还有一些上下文:
段是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数据框,它以时间戳作为索引,并以其他特征作为列。
答案 0 :(得分:2)
在熊猫中,迭代是最慢的方法。从您的问题尚不清楚您要做什么,但是本教程为迭代提供了几种更快的替代方法。