gpt4 book ai didi

python - Python 中 Pandas 的快速取子集

转载 作者:行者123 更新时间:2023-12-01 08:46:58 29 4
gpt4 key购买 nike

我运行了几百万次循环,并且需要在每个循环中对不同数量的数据进行子集化。我有一个数据框,有两列:时间(时间序列)和电极,对于当时发射的任何电极来说,电极表示 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)]

有什么好的替代方案吗?

最佳答案

按您的时间排序,然后您可以使用 .loc 访问窗口开头和结尾的索引,然后选择一系列索引作为子集。

将 df 的索引设置为时间序列,然后使用 df.index.get_loc(beginning_window)min(df.index.get_loc(beginning_window+window+1)) -1获取您的索引范围。

非唯一索引的最小值。

然后使用 .iloc 选择该范围。

这应该会大大加快速度。

关于python - Python 中 Pandas 的快速取子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53268002/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com