gpt4 book ai didi

python - Pandas 按行组应用卷积

转载 作者:行者123 更新时间:2023-12-03 17:27:29 24 4
gpt4 key购买 nike

我有一个如下所示的 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

我想通过在与我的数据框中具有相同“profile_index”的一组行相对应的向量(z 列)上应用带有高斯滤波器的卷积(numpy.convolve)来创建一个新的“z_gauss”列。

我试过做类似的事情
data["z_gauss"] = data.groupby('profile_index').apply(lambda x: np.convolve(x, gaussian, 'same'))
哪里 gaussian是我的高斯滤波器(向量)。但是我收到了一些错误,例如 ValueError: object too deep for desired array
您对如何进行有任何建议/提示吗?我应该将我的数据帧拆分成不同的数据帧吗?

最佳答案

您想使用转换而不是应用。这将避免插入具有每行组大小的向量:

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

关于python - Pandas 按行组应用卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59162092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com