【发布时间】:2019-04-14 08:08:20
【问题描述】:
我有一个大 db(2.4 亿行)分成块,块开始标记 (sob) 作为列之一,130 万块。
我创建了一个 block_start 系列:
block_start = pd.series(df[df.sob == True].index)
并计算块长度系列:
block_len = block_start.shift(-1) - block_start.
现在我需要在布尔列中查找每个块是否包含至少一个信号(真):
signals = []
for i in range(len(block_start)):
signals.append(df.signal[block_start[i]:block_start[i]+block_len[i]].any())
上述循环需要 20 分钟。 任何想法如何缩短它?
【问题讨论】:
标签: python pandas performance numpy