从几个Pandas系列中获取输入的循环功能的替代方案

时间:2017-06-08 13:42:35

标签: python pandas

我一直在使用Pandas一段时间但直到现在还没有遇到这样做的需要。这是设置。我有几个Pandas系列(它们的索引完全相同),比如A,B和C,以及一个复杂的函数func()。我想要做的事情(以非Pandas效率的方式)迭代通过应用func()的系列索引。

D = pandas.Series(index=A.index) # First create an empty Series
for i in range(len(A)):
    D[i] = func(A[i], B[i], C[i])

是否有一种Pandas高效的方法来实现上述考虑到这实际上是基于数组的操作?我查看了pandas.DataFrame.apply,但这些示例显示了简单函数的应用,例如numpy.sqrt(),只接受一个系列参数。

1 个答案:

答案 0 :(得分:-1)

如果你只有pd.Series,你的函数也应该返回一个系列。

因此,

D = func(A, B, C)

应该将D作为pd.Series,这是A,B和C值的矢量化结果。

如果您想在DataFrame上使用新列,可以通过以下方式解决:

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