我想对Dataframe列中的每个元素(该列的每个元素都是一个数组)使用一个函数(scipy.signal.savgol_filter)。尽管循环似乎有点不必要,但是我无法将头放在矢量化解决方案周围。
我尝试了显而易见的.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)
我认为这些都不起作用,因为整个专栏都交给了该函数。 有没有办法同时在列中的所有元素(=数组)上使用该函数,还是我必须遍历每一行?