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

Python Pandas分组生成过滤列时避免覆盖的问题求助

解决DataFrame分组过滤的循环覆盖问题

需求说明

需要完成以下数据处理操作:

  • 按Label字段分组,计算每组内各测量列的最值
  • 定义有效取值区间:最大值×0.6 至 最大值
  • 为每个测量列生成布尔过滤列,标记数值是否在对应分组的有效区间内
  • 将区间外的数值替换为NaN

示例数据

import pandas as pd

df = pd.DataFrame({
    'Measurement_1': [1, 2, 7, 9, 34, 67, 50],
    'Measurement_2': [3, 4, 30, 22, 55, 13, 45],
    'Label': ['cable', 'cable', 'cable', 'wood', 'wood', 'wood', 'wood']
})

原代码的问题分析

你之前的嵌套循环会出现覆盖问题,因为每次执行df[measurement +'_filtered'] = ...时,都会用当前标签对应的布尔值(其他行是NaN)覆盖整列,最终只有最后一次循环的标签结果保留,其余行全部变为NaN。

正确实现方案

无需嵌套循环逐个标签赋值,利用groupby计算分组区间后,用map为每行匹配对应分组的上下限,一次性生成整列的过滤结果。

步骤1:计算分组的有效区间

# 提取所有测量列
measurement_cols = [col for col in df.columns if col.startswith('Measurement_')]

# 按Label分组,计算各测量列的最大值,再生成区间下限(最大值×0.6)
group_max = df.groupby('Label')[measurement_cols].max()
group_min = group_max * 0.6

步骤2:生成过滤列并替换区间外值

for col in measurement_cols:
    # 为每行匹配对应分组的区间上下限
    lower_bound = df['Label'].map(group_min[col])
    upper_bound = df['Label'].map(group_max[col])
    
    # 生成布尔过滤列
    filter_col_name = f'{col}_filtered'
    df[filter_col_name] = df[col].between(lower_bound, upper_bound, inclusive='both')
    
    # 将区间外的数值替换为NaN
    df[col] = df[col].where(df[filter_col_name])

最终结果

运行后DataFrame内容如下:

Measurement_1  Measurement_2  Label  Measurement_1_filtered  Measurement_2_filtered
0            NaN            NaN  cable                   False                   False
1            NaN            NaN  cable                   False                   False
2            7.0           30.0  cable                    True                    True
3            NaN            NaN   wood                   False                   False
4           34.0            NaN   wood                    True                   False
5           67.0           55.0   wood                    True                    True
6           50.0           45.0   wood                    True                    True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:54:31