У меня есть Pandas кадр данных с двумя столбцами, x и y, которые соответствуют большому сигналу. Его размер составляет около 3 миллионов строк.
Длина волны от кадра данных
Я пытаюсь изолировать пики от сигнала. После использования scipy я получил список 1D Python, соответствующий индексам пиков. Однако это не фактические значения x сигнала, а просто индекс соответствующей строки:
from scipy.signal import find_peaks
peaks, _ = find_peaks(y, height=(None, peakline))
Итак, я решил, что просто отфильтрую исходный кадр данных, установив все значения в его y столбец к NaN, если они не были в индексе, найденном в пиковом списке. Я сделал это итеративно, однако, поскольку это 3000000 строк, он очень медленный:
peak_index = 0
for data_index in list(data.index):
if data_index != peaks[peak_index]:
data[data_index, 1] = float('NaN')
else:
peak_index += 1
Кто-нибудь знает, каким может быть более быстрый метод фильтрации Pandas кадра данных?