熊猫系列申请

米歇尔

我想根据条件从现有熊猫创建一个新的熊猫系列。我想获取该系列中的每个值,并将其与五个值的数组进行比较,然后将这五个值中的最接近值作为该索引处新列的值。

这是我目前拥有的:

nom_loads = array([-1089.32556032,  -873.46034816,  -657.595136  ,  -441.72992384,
    -225.86471168])

final_data['FZnom'] = final_data.FZ.apply(lambda x: nom_loads[np.argmax(x - nom_loads)])

但是我得到的列只是1089.3,即所有行中的nom_loads [0]。以我的理解,lambda函数中的x应该逐行地是final_data.FZ的每个值,但这也许对我而言是不正确的。

Ben

广晃

我相信你想要:

lambda x: nom_loads[np.abs(x - nom_loads).argmin()]

内部,apply因为您正在寻找最接近的值,而不是最远的值。所以argmax这不是一个正确的选择。

您可以使用广播方式:

idx = np.abs(final_data.FZ.values[:,None] - nom_loads).argmin(-1)


final_data['FZnom'] = nom_loads[idx]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章