gpt4 book ai didi

python - Pandas Series.apply - 使用另一个系列的参数?

转载 作者:行者123 更新时间:2023-12-01 01:41:50 25 4
gpt4 key购买 nike

我有以下声明:

>>> df['result'] = df['value'].apply(myfunc, args=(x,y,z))

Python 函数 myfunc 是在我开始使用 Pandas 之前编写的,并且设置为采用单个值。参数 x 和 z 是固定的,可以轻松地作为变量或文字传递,但我的 DataFrame 中有一个代表 y 参数的列,所以我正在寻找一种方法来为每行使用该行的值(它们行与行之间有所不同)。

即df['y'] 是我想发送到 myfunc 的一系列值

我的解决方法如下:

values = list(df['value'])
y = list(df['y'])
df['result'] = pd.Series([myfunc(values[i],x,y[i],z) for i in range(0,len(values))])

还有更好的方法吗?

编辑

使用 functools.partial 有一个问题可以解决。如果您的调用不遵循关键字参数,那么它似乎会诉诸位置参数,然后您可能会遇到 'myfunc() gets multiple value for...' 错误。

我修改了coldspeed的答案:

# Function myfunc takes named arguments arg1, arg2, arg3 and arg4
# The values for arg2 and arg4 don't change so I'll set them when
# defining the partial (assume x and z have values set)
myfunc_p = partial(myfunc, arg2=x, arg4=z)
df['result'] = [myfunc_p(arg1=w, arg3=y) for w, y in zip(df['value'], df['y'])]

最佳答案

您还可以使用 lambda 对行进行应用,如下所示:

df['result'] = df.apply(lambda row: myfunc(row['value'], y=row['y'], x=x, z=z), axis=1)

关于python - Pandas Series.apply - 使用另一个系列的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51804410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com