如何根据用户选择的Pos及给定价格在Excel列间查找对应值?
Excel多列条件查目标值
需求
根据用户选的Pos列和给定价格,在Excel数据的不同列里筛选,返回对应的目标结果(比如最大值)。
试过的代码
V=data.query("KIO" & "UYT")['KIO'].max() print(data['KIO']) print(V) V=data['GREER'].to_numpy()[data['UYT'].to_numpy() & data['HYEU'].to_numpy()].max() print(V)
代码问题及修正
- 第一个
query写法错误:query的条件得是合法的字符串逻辑,比如要筛选KIO和UYT同时满足的行,得写成data.query("KIO == 条件值 & UYT == 条件值"),不能直接把列名用&拼接。 - 第二个numpy数组筛选的问题:多条件筛选时要给每个条件加括号,比如
(data['UYT'].to_numpy() == 条件) & (data['HYEU'].to_numpy() == 条件),避免因运算符优先级导致结果出错。
适配需求的示例代码
假设用户选的Pos列是UYT,给定价格是100,要找对应行里GREER列的最大值:
# 定义用户选择的Pos列和目标价格 selected_pos = "UYT" target_price = 100 # 方式1:用query筛选 max_result = data.query(f"{selected_pos} == {target_price}")['GREER'].max() # 方式2:用布尔索引,更直观 max_result = data[data[selected_pos] == target_price]['GREER'].max() print(max_result)
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

