Pandas逐行循环计算北向南最大梯度的Pythonic优化方法
优化实现方案
直接使用Pandas+Numpy的向量化操作替代循环,代码更简洁,处理大规模数据时性能远高于遍历写法,逻辑和你原有实现完全一致:
import pandas as pd import numpy as np # 核心逻辑:向量化计算每行梯度,自动跳过maxSlats和maxNlats相等的行 grad = ( ms.assign( gr = np.where( ms['maxSlats'] > ms['maxNlats'], -(ms['maxSlats'] - ms['minNlats']), np.where(ms['maxNlats'] > ms['maxSlats'], ms['maxNlats'] - ms['minSlats'], np.nan) ), col0 = ms.index + 1, col1 = ms.index ) .dropna(subset=['gr']) # 过滤两个max相等的行,和原循环逻辑对齐 .set_index('gr')[['col0', 'col1']] .rename_axis(None, axis=0) # 去掉索引列的名称 ) print(grad)
运行以上代码得到的输出和你提供的正确结果完全匹配。
内容的提问来源于stack exchange,提问作者user2100039
相关产品推荐
相关产品推荐

