Python 通过从多个系列获取输入的函数循环的替代方法

Python 通过从多个系列获取输入的函数循环的替代方法,python,pandas,Python,Pandas,我使用熊猫已经有一段时间了,但直到现在才发现有必要这么做。这是设置。我有几个熊猫系列(它们的索引完全相同),比如A、B和C,还有一个复杂的函数func()。我试图(以一种非有效的方式)迭代应用func()的序列的索引 考虑到这本质上是基于阵列的操作,是否有一种有效的方法来执行上述操作?我查看了pandas.DataFrame.apply,但示例展示了一些简单函数的应用,例如仅接受一个系列参数的numpy.sqrt() 如果只有一个pd.Series,那么函数也应该返回一个Series 所以, D

我使用熊猫已经有一段时间了,但直到现在才发现有必要这么做。这是设置。我有几个熊猫系列(它们的索引完全相同),比如A、B和C,还有一个复杂的函数func()。我试图(以一种非有效的方式)迭代应用func()的序列的索引


考虑到这本质上是基于阵列的操作,是否有一种有效的方法来执行上述操作?我查看了pandas.DataFrame.apply,但示例展示了一些简单函数的应用,例如仅接受一个系列参数的numpy.sqrt()

如果只有一个pd.Series,那么函数也应该返回一个Series

所以,

D = func(A, B, C)
应产生作为pd.系列的D,这是a、B和C值上的矢量化结果

如果要在数据帧上添加新列,可以通过以下方式解决:

df.loc[:,'new column'] = \
        df.loc[:,'data column'].\
            apply(lambda x: func(x, A[x.name], B[x.name], C[x.name]), axis=1)

你能分享一下
func
的实现吗?或者你想用一个通用的
func
?看起来你想要一个系列的数据框,那么你可以用func(数据框),只要它被正确的矢量化,结果是一个系列(或新的列)包含你的答案。我对一个更通用的函数感兴趣。我可以看到我自己在使用scipy函数,比如func()中的cdf()。@jeremycg:所以我将A、B、C连接到一个数据帧中,并将其馈送到func?是的,你可能想先读一读关于矢量化的更多内容-请看这里最近的pycon对话-
df.loc[:,'new column'] = \
        df.loc[:,'data column'].\
            apply(lambda x: func(x, A[x.name], B[x.name], C[x.name]), axis=1)