【发布时间】:2019-04-15 12:26:58
【问题描述】:
我正在运行一个循环数百万次,我需要在每个循环中对不同数量的数据进行子集化。我有一个数据框,它有两列,时间(这是一个时间序列)和电极,这表示当时触发的任何电极的数字在 1-64 之间。
time electrode
0 1
1 43
2 45
3 12
4 7
在每个循环中,我需要对数据进行子集化,例如:
num_electrodes = []
window_size = 5
index = 0
while index < len(data['time']) - interval_size:
start = data['time'][index]
end = data['time'][index+window_size]
window_data = data[(data['time'] >= start) & (data['time'] < end)]
num_electrodes.append(len(window_data['electrode'].unique()))
在下面的代码中,这里的代码真正慢的部分是对数据帧进行子集化并创建一个新的数据帧。
window_data = data[(data['time'] >= start) & (data['time'] < end)]
有什么好的选择吗?
【问题讨论】:
-
是你的
time系列字符串/datetime/timedelta/其他吗? -
你什么时候增加索引,从多少开始?
-
@jpp 数据被标准化以从时间点“0”开始,然后继续到时间点 ~3600 分钟,增量为 ~0.001 分钟。
-
@B.M.我实际上在这里放了一个简化的例子,我只是想知道如何更快地对我的数据进行子集
标签: python pandas performance indexing subset