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

如何为Pandas DataFrame每行应用自定义函数并按列追加结果?

如何为Pandas DataFrame逐行应用自定义函数并追加结果

需求

  • 自定义函数需使用目标DataFrame(df1)某一列的值
  • 函数需引用另一个DataFrame(df2)的数据进行计算
  • 将计算结果按列追加到df1中

示例数据

import pandas as pd
from IPython.display import display

df1 = pd.DataFrame([1, 2, 3], columns=["x"])
df2 = pd.DataFrame({"set1": [0, 0, 0, 0], "set2": [100, 200, 300, 400]})

display(df1, df2)

自定义函数

先修正函数参数,使其适配逐行处理逻辑(接收单个x值):

def myfunc(df2, x):
    # 自定义计算逻辑
    ans = df2["set1"] + df2["set2"] * x
    return ans

期望输出

xrun1run2run3run4
01100200300400
12200400600800
233006009001200

一行代码实现方案

方案1:apply结合concat

通过df1["x"].apply()逐行传入x值,将返回结果转为DataFrame并重命名列后,与原df1合并:

df1 = pd.concat([df1, df1["x"].apply(lambda val: myfunc(df2, val)).rename(lambda idx: f"run{idx+1}")], axis=1)

方案2:向量化广播(高效优先)

利用Pandas广播特性直接完成批量计算,避免逐行循环,处理大规模数据时效率更高:

df1 = pd.concat([df1, (df2["set1"] + df2["set2"].values[:, None] * df1["x"].values).T.add_prefix("run")], axis=1)

两种方案均可得到目标结果,根据数据规模选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:05:22