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

如何优化Python中遍历DataFrame列组合的嵌套for循环?

使用pandas groupby替代嵌套循环优化DataFrame分组处理

你当前的嵌套循环逻辑可以通过pandas的groupby功能完全简化,无需手动遍历唯一值和多层筛选数据。以下是两种高效实现方式:

方式1:直接遍历分组结果

通过groupby(['Temperature', 'Device', 'Coordinate'])一次性按三个维度分组,直接遍历每个分组即可完成原逻辑:

from pandas import DataFrame

df = DataFrame([[30, 'DEV1', 'X4Y4', [0, 1, 2, 3], [1E-5, 2E-5, 3E-5, 4E-5]],
                [30, 'DEV1', 'X5Y5', [0, 1, 2, 3], [1E-5, 2E-5, 3E-5, 4E-5]],
                [30, 'DEV2', 'X4Y4', [0, 1, 2, 3], [1E-5, 2E-5, 3E-5, 4E-5]],
                [30, 'DEV2', 'X5Y5', [0, 1, 2, 3], [1E-5, 2E-5, 3E-5, 4E-5]],
                [85, 'DEV1', 'X4Y4', [0, 1, 2, 3], [1E-5, 2E-5, 3E-5, 4E-5]],
                [85, 'DEV1', 'X5Y5', [0, 1, 2, 3], [1E-5, 2E-5, 3E-5, 4E-5]],
                [85, 'DEV2', 'X4Y5', [0, 1, 2, 3], [1E-5, 2E-5, 3E-5, 4E-5]],
                [85, 'DEV2', 'X5Y5', [0, 1, 2, 3], [1E-5, 2E-5, 3E-5, 4E-5]]],
               columns=['Temperature', 'Device', 'Coordinate', 'Voltage', 'Current'])

# 按三个维度分组
groups = df.groupby(['Temperature', 'Device', 'Coordinate'])

# 遍历每个分组,参数为(分组键元组, 分组对应的DataFrame)
for (temp, device, coord), group_df in groups:
    # 原逻辑中每个分组仅一行,直接提取Voltage和Current
    voltage = group_df['Voltage'].iloc[0]
    current = group_df['Current'].iloc[0]
    
    # 这里替换为你的业务处理逻辑
    print(f"处理组合: 温度={temp}, 设备={device}, 坐标={coord}")
    print(f"电压数据: {voltage}, 电流数据: {current}\n")

方式2:用apply批量处理分组

如果你的处理逻辑可复用,可封装成函数,通过apply批量处理所有分组并返回结构化结果:

import pandas as pd

def process_single_group(group):
    # 提取当前分组的核心数据
    voltage = group['Voltage'].iloc[0]
    current = group['Current'].iloc[0]
    
    # 示例处理:计算电压电流比值列表
    vi_ratio = [v/c for v, c in zip(voltage, current)]
    
    # 返回需要的结果字段
    return {
        'Temperature': group['Temperature'].iloc[0],
        'Device': group['Device'].iloc[0],
        'Coordinate': group['Coordinate'].iloc[0],
        'V/I Ratio': vi_ratio
    }

# 应用函数到所有分组,转换为DataFrame
result_df = groups.apply(process_single_group).apply(pd.Series)
print(result_df)

优势对比

  • 代码简洁:一行groupby替代三层嵌套循环和多次筛选,逻辑更直观
  • 性能更优:pandas的groupby内部经过C级优化,数据量越大,比手动循环的效率提升越明显
  • 可维护性强:分组逻辑和业务处理分离,后续修改维度或处理逻辑更方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:20:57