如何使用Pandas向量化操作计算三列数据的中间值mid列
Pandas DataFrame 按行求三列中间值的优雅向量化实现
最优方案(复用已计算的max/min列)
你已经提前生成了max和min列,直接通过三数之和减去两个极值就能得到中间值,完全向量化运算,无排序开销,性能最高:
df['mid'] = df[['A', 'B', 'C']].sum(axis=1) - df['max'] - df['min']
该方案对重复值场景也完全兼容,比如存在两个或三个数值相等的情况,计算结果依然准确。
通用方案(无需依赖提前计算的极值列)
如果不需要单独保留max、min列,直接按行计算三个数的中位数即可,一行代码实现,逻辑清晰易读:
# 因为示例数据都是整数,用astype(int)转换回整数类型即可 df['mid'] = df[['A', 'B', 'C']].median(axis=1).astype(int)
两种方案都是完全向量化实现,性能远高于条件判断写法,代码也更简洁易维护。
内容的提问来源于stack exchange,提问作者lal
相关产品推荐
相关产品推荐

