Применить преобразование сигнала к каждой строке фрейма данных - PullRequest
0 голосов
/ 09 июля 2020

У меня есть фрейм данных, где каждая строка фрейма данных содержит сигнал времени. Образцы сигнала времени хранятся в столбцах.

     0    1         2         3    ...       996       997       998       999
a  0.0  0.713118  1.199746  1.319181  ... -1.069539 -1.319181 -1.199746 -0.713118
b  0.0  0.587785  0.951057  0.951057  ... -0.587785 -0.951057 -0.951057 -0.587785
c  0.0  0.125333  0.248690  0.368125  ... -0.481754 -0.368125 -0.248690 -0.125333

Я хочу фильтровать нижних частот каждую строку и использовать для этого scipy. Мой фактический код работает, но я хотел бы избежать повторения с l oop по фрейму данных:

import numpy as np
from scipy import signal
import pandas as pd

def lowPassFilter(df, fs=1000, fc=20):
    data_fil = df.copy()
    rows = df.shape[0]
    # --- Setup Filter with sampling frequency fs and cutoff frequency fc
    w = fc / (fs / 2)
    b, a = signal.butter(5, w, 'low')
    # --- Apply Filter to every row
    for i in range(rows):
        data_fil.iloc[i, :] = signal.filtfilt(b, a, data_fil.iloc[i, :])
    return data_fil

Я пытался использовать функцию применения фрейма данных, но у меня это не сработало. Итак, мой вопрос:

Как вообще лучше всего выполнять преобразования, подобные приведенным выше, для каждой строки фрейма данных? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...