我一直在使用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(),只接受一个系列参数。
答案 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)