在Pandas中将元组分配给段的最有效方法

时间:2018-12-17 13:37:40

标签: python pandas

我编写了以下代码,将元组分配给段。段是元组的容器,跨一定的时间间隔。与只有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数据框,它以时间戳作为索引,并以其他特征作为列。

1 个答案:

答案 0 :(得分:2)

在熊猫中,迭代是最慢的方法。从您的问题尚不清楚您要做什么,但是本教程为迭代提供了几种更快的替代方法。

https://realpython.com/fast-flexible-pandas/