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

如何基于列值在Pandas DataFrame中无循环高效计算Coeff列?

Pandas大型数据集高效计算Coeff列方案

问题场景

现有如下结构的Pandas DataFrame df_1:

Phase_1  Phase_2   Phase_3
0      8       4        2
1      4       6        3
2      8       8        3
3      10      5        8
...

需要新增名为Coeff的列,计算逻辑为(Phase_max - Phase_min) / Phase_max,其中Phase_max是每行中所有Phase开头列的最大值,Phase_min是对应行的最小值。期望输出如下:

Phase_1  Phase_2   Phase_3   Coeff
0      8       4        2       0.75
1      4       6        3       0.5
2      8       8        3       0.625
3      10      5        8       0.5

针对大型数据集,需采用无循环的最优实现方式。

最优实现方案

利用Pandas的矢量化行操作直接计算,完全避免循环,是处理大型数据集的最优方式:

# 筛选所有以Phase_开头的列
phase_cols = df_1.filter(like='Phase_').columns
# 计算每行的最大值与最小值
row_max = df_1[phase_cols].max(axis=1)
row_min = df_1[phase_cols].min(axis=1)
# 生成Coeff列
df_1['Coeff'] = (row_max - row_min) / row_max

方案优势

  • 极致效率:Pandas的max(axis=1)和min(axis=1)是底层优化的矢量化操作,比Python循环快数倍至数十倍,适配百万级以上的大型数据集。
  • 灵活适配:通过filter(like='Phase_')自动匹配所有Phase类列,后续新增同类型列无需修改代码。
  • 逻辑清晰:代码直接对应需求中的计算步骤,可读性强,便于维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:25:38