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

Pythonic的pandas原生方式为DataFrame批量添加多组差值计算列?

优化后的Pythonic pandas实现

最简洁的pandas原生写法完全可以避免显式for循环,利用pandas向量化运算特性一行代码实现需求:

df_out = df_out.join((df_out[all_pos] - mean_df[all_pos]).add_prefix('delta_'))

原理解释

  • 因为df_out和mean_df的索引、对应列完全对齐,直接对选中的all_pos列做减法,会得到一个列名和all_pos完全一致的差值DataFrame
  • 调用add_prefix('delta_')方法可以批量给所有差值列添加前缀,直接生成delta_NN、delta_VB、delta_ADJ的目标列名
  • 最后通过join方法把差值列合并回原df_out即可

可选原地赋值写法

如果你需要直接修改原df_out而不是生成新对象,也可以用下面的写法:

df_out[[f'delta_{col}' for col in all_pos]] = df_out[all_pos] - mean_df[all_pos]

相比原循环写法的优势

  • 完全基于pandas原生向量化运算,避免Python层面的循环,执行效率远高于逐列循环,数据量越大性能优势越明显
  • 代码更简洁连贯,符合Pythonic的风格,可读性更高
  • 不需要手动逐列拼接列名赋值,减少出错概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:57:04