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

如何在Pandas DataFrame的apply函数中传入数组单个元素?

解决Pandas DataFrame apply函数传入数组单个元素的问题

你当前的代码无法实现需求,因为args=(array)会把整个数组作为参数传给addArray的b参数,而非逐行匹配数组的单个元素。以下是几种可行的实现方式:

方法1:结合行索引在apply中匹配数组元素

利用行的索引值(row.name)获取数组中对应的元素,实现逐行配对:

import pandas as pd

df = {"A" : [1,2,3,4], "B" : [10, 20, 30, 40]}
df = pd.DataFrame(df)
array = [2,3,4,5]

# 用lambda简化写法
df['C'] = df.apply(lambda row: row['A'] + array[row.name], axis=1)

# 或者保留自定义函数的写法(注意args要传元组,末尾加逗号)
def addArray(row, arr):
    return row['A'] + arr[row.name]

df['C'] = df.apply(addArray, axis=1, args=(array,))

print(df)

运行后C列会得到[3,5,7,9],符合预期。

方法2:矢量化运算(更高效)

对于大数据量,优先使用Pandas的矢量化操作,比逐行apply性能更高:

df['C'] = df['A'] + pd.Series(array, index=df.index)

直接将数组转为和DataFrame索引一致的Series,再与A列做加法,本质是元素级别的匹配运算,效率远高于逐行循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:52:17