Я хочу использовать функцию (scipy.signal.savgol_filter) для каждого элемента в столбце Dataframe (каждый элемент столбца является массивом). Хотя цикл кажется немного ненужным, я не могу обернуть голову вокруг векторизованного решения.
Я попробовал очевидный метод .apply, а также просто использовал функцию для столбца. Оба показывают ошибку типа «установка элемента массива с помощью последовательности».
Пример кода со списками вместо массивов (но с одинаковыми результатами):
import pandas as pd
from scipy import signal
df = pd.DataFrame(data={'A': [[1,3,9], [7,2,3], [3,2,6,3], [2,3,4]]})
df['smooth'] = df.apply(signal.savgol_filter, args=(3, 0))
Соответственно:
df['smooth'] = signal.savgol_filter(df['A'], 3, 0)
Или:
df['smooth'] = signal.savgol_filter(df['A'].values, 3, 0)
Ни одна из этих работ, я думаю, потому что весь столбец передан функции.
Есть ли способ использовать функцию на всех элементах (= массивах) в столбце одновременно или мне нужно циклически проходить по каждой строке?