【发布时间】:2019-05-15 17:38:50
【问题描述】:
我想对 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)
我认为这些都不起作用,因为整列都给了函数。 有没有办法同时在列中的所有元素(=数组)上使用该函数,还是我必须遍历每一行?
【问题讨论】:
标签: python arrays pandas dataframe apply