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

如何对pandas DataFrame多列批量执行数学运算并新增对应列存储结果

解决方案

你可以通过匹配列名前缀批量执行运算,再按规则重排列顺序即可,无需逐列手动编写代码,示例实现如下:

核心代码

import pandas as pd

# 可自定义配置项
p_col_multi_coef = 2  # p开头列的乘系数,按需修改
fill_diff_na = True   # diff计算后第一行的空值是否填充为0
fill_value = 0

# 批量生成计算结果列
for col in df.columns:
    # 处理p开头列,生成M+原列名的新列
    if col.startswith("p"):
        df[f"M{col}"] = df[col] * p_col_multi_coef
    # 处理v开头列,生成D+原列名的新列
    elif col.startswith("v"):
        diff_res = df[col].diff()
        df[f"D{col}"] = diff_res.fillna(fill_value) if fill_diff_na else diff_res

# 自动重排列为 p1-Mp1-v1-Dv1-p2-Mp2-v2-Dv2... 的顺序
# 自动提取p列的最大序号,无需手动传入列数量
max_p_num = max(int(col[1:]) for col in df.columns if col.startswith("p"))
sorted_cols = []
for num in range(1, max_p_num + 1):
    sorted_cols.extend([f"p{num}", f"Mp{num}", f"v{num}", f"Dv{num}"])
df = df.reindex(columns=sorted_cols)

拓展说明

如果后续需要修改运算规则,仅需调整对应分支的计算逻辑即可:

  • 若p列需要做加法/除法/取对数等其他运算,替换df[col] * p_col_multi_coef为对应运算代码
  • 若v列需要做滚动求和/差分阶数调整等,替换df[col].diff()为对应运算代码
  • 新列命名规则可通过修改f-string的前缀自定义,比如把M改成Mul、D改成Diff都可直接调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:39:02