熊猫系列适用

问题描述 投票:0回答:1

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

这是我目前拥有的:

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的每个值,但是就我而言,这也许是不正确的。

pandas apply
1个回答
0
投票

您可以使用广播方式:

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


final_data['FZnom'] = nom_loads[idx]
© www.soinside.com 2019 - 2024. All rights reserved.