python - Pandas 中将元组分配给段的最有效方法
问题描述
我编写了以下将元组分配给段的代码。段是元组的容器,跨越一定的时间间隔。与只有 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
以下是更多上下文:
Segment是 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 数据帧,它有时间戳作为索引,其他一些特征作为列。
解决方案
Iterrows 是 Pandas 中最慢的处理方式。从您的问题中不清楚您要做什么,但本教程提供了几个更快的 iterrows 替代品。
推荐阅读
- javascript - 使用jquery动态确定点击了特定类的哪个按钮
- python-3.x - 索引定位器错误 IndexError:单个位置索引器超出范围
- sql - SQL 选择连接表上的最新记录
- r - R中的else和条件分类语句
- generics - 如何避免传递类型依赖?
- javascript - 删除动画并显示全尺寸图像 HTML/CSS/JS 的问题
- python - ValueError:检查目标时出错:预期(keras 序列模型层)具有 n 维,但得到的数组具有形状
- java - Java 数组算法,将 shuffle 类型从“in-shuffle”交换为“out-shuffle”时出错
- node.js - 如何在 Firestore 触发器之外写入 firebase?
- postgresql - 如何在设置中更改 postgres docker image wal 级别?