numpy Pandas应用按行组卷积

7kjnsjlb  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(102)

我有一个pandas框架如下:

profile_index  point_index         z              x             y
0              0            1 -0.885429  297903.323027  6.669492e+06
1              0            2 -0.820151  297904.117752  6.669492e+06
2              0            3 -0.729671  297904.912476  6.669491e+06
3              0            4 -0.649332  297905.707201  6.669490e+06
4              1            1 -0.692186  297906.501926  6.669490e+06
5              1            2 -0.885429  297903.323027  6.669492e+06
6              1            3 -0.820151  297904.117752  6.669492e+06
3              1            4 -0.649332  297905.707201  6.669490e+06

我想创建一个新的“z_gauss”列,方法是对向量(列z)应用卷积(numpy.convolve)和高斯滤波器,这些向量对应于我的框架中具有相同“profile_index”的一组行。
我试着做一些事情
data["z_gauss"] = data.groupby('profile_index').apply(lambda x: np.convolve(x, gaussian, 'same'))
其中gaussian是高斯滤波器(向量)。但我得到一些错误,如ValueError: object too deep for desired array
你对如何进行有什么建议/提示吗?我应该把我的格子分成不同的格子吗?

zed5wv10

zed5wv101#

您希望使用transform而不是apply。这将避免插入每行具有组大小的向量:

data["z_gauss"] = (data.groupby('profile_index')['z']
                   .transform(lambda x: np.convolve(x, gaussian, 'same')))

相关问题