You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于另一DataFrame分组条件筛选Pandas DataFrame行

解决方法

要实现按分组最值筛选数据的需求,你可以通过表关联+条件筛选的方式快速完成,步骤如下:

步骤1:关联两个DataFrame

先把data和boundary按Name字段做左连接,这样data里的每一行都会带上对应Name的Min和Max阈值:

merged_df = data.merge(boundary, on='Name', how='left')

步骤2:按条件筛选行

直接筛选出Salary低于对应Min或高于对应Max的行:

filtered_df = merged_df[(merged_df['Salary'] < merged_df['Min']) | (merged_df['Salary'] > merged_df['Max'])]

步骤3:保留需要的列

最后只保留Name和Salary列,得到目标结果:

result = filtered_df[['Name', 'Salary']]
print(result)

运行后输出的结果就是你期望的:

Name  Salary
0   John    18000
2    Sam    15000
3    Sam    35000

另一种实现方式(无需合并表)

如果不想生成中间合并表,也可以把boundary转成字典,用map给data添加阈值列,再筛选:

# 把boundary转成Name对应Min/Max的字典
min_map = boundary.set_index('Name')['Min'].to_dict()
max_map = boundary.set_index('Name')['Max'].to_dict()

# 给data添加对应阈值列
data['Min'] = data['Name'].map(min_map)
data['Max'] = data['Name'].map(max_map)

# 筛选并保留目标列
result = data[(data['Salary'] < data['Min']) | (data['Salary'] > data['Max'])][['Name', 'Salary']]

内容的提问来源于stack exchange,提问作者Trizzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:40:51